const修飾子のついたメンバ,参照指定のメンバ,オブジェクトメンバ.これらをJavaの方法と同様な初期化をコンストラクタ中で行うことはできるか?
A
出来ない.コンパイラからお叱りをうけるだけである.
以下のコードはコンパイルでも実行時でも問題ない.
#include <iostream> #include <sstream> using namespace std; class InnerObject { private: int id; public: InnerObject(int paramId):id(paramId){ cout << "InnerObject init " << id << endl; } int GetId() { return id; } }; class MyClass { private: const char* str; int& r; InnerObject in; public: MyClass(const char* paramStr, int& paramR, InnerObject paramIn ): str(paramStr),r(paramR),in(paramIn) { cout << "MyClass init " << endl; } void dump(); }; void MyClass::dump() { ostringstream os; os << "str:" << str << " "; os << "r:" << r << " "; os << "In's Id:" << in.GetId() << endl; cout << os.str().c_str() << endl; } int main() { InnerObject in(20); string s("neko"); int r = 3; MyClass m("abc",r,in); m.dump(); return 0; }
0 件のコメント:
コメントを投稿