コンストラクターと割り当てを理解するために、次のような非常に単純なテスト コードを作成しました。
class A {
public:
A() { std::cout<<"This is default cstr."; }
A(int i) { std::cout<<"This is int cstr. value is "<<i; }
A(const A &a) { std::cout<<"This is copy cstr."; }
A operator=(const A &a) { std::cout<<"This is assignment operator."; return *this;// this line is tricky }
};
int _tmain(int argc, _TCHAR* argv[]) {
std::cout<<"line 1 "; A a1; std::cout<<std::endl;
std::cout<<"line 2 "; A a2 = A(1); std::cout<<std::endl;
std::cout<<"line 3 "; a1 = a2; std::cout<<std::endl;
return 0;
}
3行目で得たもの:
line 3 This is assignment operator.This is copy cstr.
しかし、に変更return *this;
するとreturn NULL
、次のようになりました。
line 3 This is assignment operator.This is int cstr. value is 0
誰かが私のために何が起こったのか説明できますか?