C++プログラマ キャスブログ
[C++]クラスのインスタンスなんてダミー 2014年12月30日07:12:20
C++はオブジェクト指向言語といいつつも 内部の実装は関数と関数ポインタばかりです。 試しにこんな実験です。 インスタンスがnullであっても実態は関数にthisポインタと 呼ばれる自身のポインタを渡して呼び出しているだけです。 メンバ変数にアクセスしない限りメンバメソッドは呼び放題です。(ただしvirtualは除く) ※危険なのでよい子は真似しないでくださいね。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #include <cstdio> // printfに必要なヘッダー class A { public: void print() { printf( "%p test\n", this ); } // 見えませんが実態はこんな感じの引数がついています。 // ※注 イメージ // void print(A* this) }; int main() { A* a = nullptr; // C++11でなければNULL a->print(); // 見えませんがこんな感じの呼ばれ方です。 // ※注 イメージ // A::print( a ); return 0; }
出力: 00000000 test
カテゴリ

リンク
C++11のコードを
試すのに便利です。
http://ideone.com/

同人ゲームを
製作している知人
sorcery

にほんブログ村 IT技術ブログ C/C++へ
にほんブログ村


C++ ブログランキングへ

ゲームダウンロード DefenceTri