1
を戻しながらこれは参考になるベクトルディープコピーが動作しない理由を誰かが私は機能ディープコピー動作機能から
からそれを返すとき、私はコンストラクタとコピーを持つ構造体を持って説明することができますですこの
struct {
A() { cout<<"Constructor..."<<endl; }
A(const A &) { cout<<"Copy Constructor...."<<endl;
};
のようなコンストラクタ私はこの
のようにコードを変更した場合、私は、しかし、このint main() {
A a1; // constructor gets called here
vector<A> vec;
vec.push_back(a1) // Copy constructor gets called here
vector<A> copyvec = vec; // Again copy constructor gets called here
}
のようなメインプログラムを記述する場合
vector<A> retvecFunc() {
A a1; // Constructor gets called
vector<A> vec;
vec.push_back(a1); // Copy Constructor gets called
return vec; // copy constructor **DOESN'T GETS CALLED**
}
私の主な機能は
int main() {
vector<A> retVec = retvecFunc();
return 0;
}
[コピー - エリッションと戻り値の最適化](http://stackoverflow.com/questions/12953127/what-are-copy-elision-and-return-value-optimization)についていくつかの調査を行いたい場合があります。 –