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 件のコメント:
コメントを投稿