掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
C++のインスタンスメンバの関数ポインタ (ID:69285)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
C++で関数ポインタを勉強中です。それで色々試して以下のソースのような ことをしていたところ、コンソールに表示される関数のアドレスが同じ ことに気づきました。 インスタンスを作るごとにメンバ変数、関数ともに作られると思って いましたが、もしやメンバ関数は変数と違いどのインスタンスでも同じもの で、インスタンス関数を呼び出すのは、それ自体が関数ポインタ呼び出し のようなもの?なのでしょうか? また、static付のメンバ関数との違いは?と混乱している状態ですので、 ここに質問させていただきました。 すみませんがこの辺りを教えてもらえないでしょうか。 class CSample { protected: typedef void ( CSample::*FPSAMPLE )(); static FPSAMPLE table[]; void func1(); public: void func(); }; void CSample::func1() { _tprintf( _T( "%p\n" ), &CSample::func1 ); } void CSample::func() { FPSAMPLE func = table[ 0 ]; ( this->*func )(); } CSample::FPSAMPLE CSample::table[] = { &CSample::func1, }; int _tmain(int argc, _TCHAR* argv[]) { CSample sample1, sample2; sample1.func(); sample2.func(); return 0; }
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.