イントロダクション 派生される可能性があるクラスではデストラクタを virtual にすることは C++ の基本事項としていいでしょう。しかし、その知識を持ってはいるけどいまいち virtual を理解していなくて、何でもかんでも virtual にしてしまう、というのではいけません。そういう人のために、ここでは virtual を使ってはいけない場合について書きます。 何のために virtual があるのか さて、メンバ関数を virtual 宣言すると、そのクラスに対し vtable と呼ばれるテーブルが作られ、隠しメンバとして vtable へのポインタが追加されます。vtable は virtual 宣言されている関数のアドレスを集めたテーブルであり、vtable へのポインタは 32bit 環境なら大抵 4 byte になります。つまり、クラスの中に virtual 宣言されたメ
Eclipseuml.com This Page Is Under Construction - Coming Soon! Why am I seeing this 'Under Construction' page? Related Searches: Health Insurance Accident Lawyers Healthy Weight Loss Free Credit Report Cheap Air Tickets Trademark Free Notice Review our Privacy Policy Service Agreement Legal Notice Privacy Policy
第2回「Eclipseをモデリングツールに活用しよう」ではEclipseUMLプラグインの紹介とインストールを行いました。 今回は、「書籍管理システム」の機能を順次実装していくことを想定し、UMLをEclipse上で作図してみましょう。説明は設計工程の流れに沿いながら行います。前回も触れましたが、Web系のシステムでは、ユースケース図、クラス図、シーケンス図がよく利用されます。ですので、これらについては詳しく見ていきますが、それ以外については本稿では簡単な紹介にとどめます。 [要件抽出/分析]ユースケースを記述する 扱う図
(C)2015 石森プロ・テレビ朝日・ADK・東映 (C)2013 石森プロ・テレビ朝日・ADK・東映 (C)2008 テレビ朝日・東映AG・東映 (C)2009 テレビ朝日・東映AG・東映 (C)2010 テレビ朝日・東映AG・東映 (C)2012 テレビ朝日・東映AG・東映 (C)2013 テレビ朝日・東映AG・東映 (C)石森プロ・東映 (C)テレビ朝日・東映AG・東映 (C)石森プロ・テレビ朝日・ADK・東映 (C)2010 石森プロ・テレビ朝日・ADK・東映 (C)2011 石森プロ・テレビ朝日・ADK・東映 (C)2012 石森プロ・テレビ朝日・ADK・東映 (C)2011 石森プロ・テレビ朝日・東映AG・東映 (C)東映・東映ビデオ・石森プロ (C)2004,2005,2006,2007,2008,2009 石森プロ・テレビ朝日・ADK・東映 (C)2005 石森プロ・東映
抽象データ型と Java/C++ そして COM/CORBA 抽象データ型とは… 抽象データ型 継承 多態 をオブジェクト指向の三本柱などと称しています。その中でも抽象データ型(あるいはデータの抽象化)はオブジェクト指向の最も基本的で重要な概念ではないかと考えます。 "データを抽象化する"とは、データをそれに対して適用できる操作の集合で定義することです。 簡単な例として"カウンタ"を考えてみましょう。カウンタには3つの操作: +1する (increment) -1する (decrement) 現在値を取得する を提供させることにします。 さて、このカウンタをCで実現するとどうなるでしょうか… typedef struct { long value_; } Counter; Counter* counter_create(); void counter_incr(Counter*); voi
#include <iostream> using namespace std; class Parent { public: void func(void) { cout << "基底クラスのメソッドです" << endl; } }; class Child : public Parent { public: //オーバーライドしたメソッド void func(void) { cout << "派生クラスのメソッドです" << endl; } }; int main(int argc, char** argv) { Parent *p_parent; Child i_child; p_parent = &i_child; i_child.func(); //オーバーライドしたメソッドを呼び出す i_child.Parent::func();//基底クラスのメソッドを呼び出す p_pare
インディーズゼロは,ニンテンドーDS(任天堂)などの携帯ゲーム機用のゲームソフトを中心に開発を行っている,ゲームソフト開発会社です。オフィスは,緑の豊富な井の頭公園や,オシャレなお店でにぎわう吉祥寺にあり,スタッフ数は現在22名。 「千年家族」や「しゃべる!DSお料理ナビ」といった一風変わったタイプのゲームソフトの開発を得意としています。ここでは,実際にゲーム開発に携わるプログラマが,どんな仕事をし,どんな生活を送っているのかをご紹介したいと思います。 第1回 ゲーム・プログラマの1日 第2回 ゲーム開発の仕事って? 第3回 ゲーム・プログラマはこんな人 第4回 ゲーム業界への就職・転職を目指す方へ
今回は、パターンを1つだけ紹介します。「Mediatorパターン」です。GoF本では、それぞれのパターンの「目的]「背景」「効果」などが明示されています。私も、ちょっと真似をしてみましょう。複数のオブジェクトを組み合わせてプログラムの機能を実現するという目的において、オブジェクト間の関連がゴチャゴチャになってしまうという背景(問題)があり、Mediatorパターンの採用によって関連をキレイに整理できるという効果があります。説明だけでは、何のことだかわからないと思いますので、具体例をお見せしましょう。 図1[拡大表示](1)をご覧ください。これは、UML(Unified Modeling Language、ユーエムエル)と呼ばれる表記法で記述されたプログラムの設計図です。UMLでは、四角形の中に下線付きで名前を書いてオブジェクトを表し、関連のあるオブジェクトを矢印で結んで示します。ここで関連
Q1: デストラクタにvirtualをつけろとよく言われるけど、なんで? 挙動が未定義のdeleteを呼び出す可能性があるから Q2: 挙動が未定義だと駄目なの? 超駄目。何が起きても文句は言えない Q3: どんな時に挙動が未定義のdeleteが呼び出されるの? こんなとき // NoVirtualBaseClass : デストラクタにvirtualを持たない // NoVirtualSuperClass : NoVirtualBaseClassを継承 NoVirtualBaseClass * ptr = new NoVirtualSuperClass(); // 挙動が未定義 delete ptr; Q4: 何でそうなるの? delete時点で、ptrは自分がNoVirtualBaseClassのインスタンスだと思ってるから Q5: 何で?NoVirtualSuperClassでnewし
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く