次のコードは、を出力するだけA::A()
で、A::A(const A&)
またはを出力しませんoperator=
。なんで?
struct A
{
A() { cout << "A::A()" << endl; }
A(const A& value) { cout << "A::A(const A&)" << endl; }
A& operator=(const A& newValut)
{
cout << "A::operator=" << endl;
return *this;
}
};
A foo()
{
A a; //Ok, there we have to create local object by calling A::A().
return a; //And there we need to copy it, otherwise it will be destroyed
//because it's local object. But we don't.
}
int main()
{
A aa = foo(); //Also there we need to put result to the aa
//by calling A::A(const A&), but we don't.
}
したがって、このコードは印刷する必要があります
A::A()
A::A(const A&)
A::A(const A&)
しかし、そうではありません。なんで?
最適化なしではfoo()
アンダーのインライン化はないことをお勧めします。g++