copy constructor
《inside the c++ object model》是本非常好的書,特別是幫助對類的構造和析構的理解。
下面我要是的一個就是關於c++默認的拷貝構造函數;一般我們用到它在以下情況
// class A {...};
A aa; // default ctor
A a = aa; // copy ctor
//
void func(A a) { // TODO }
func(a) // copy ctor
A f() { return A(); }
f(); // copy ctor
// 以下是我遇到與下面相似問題時的產生的這個思考
class B : public A {
B(const A &a) A(a) {...} // A沒有explicit copy constructor
// TODO
};
當我沒在A中定義自己的copy constructor,便會使用類自動生成的默認copy constructor,那么默認生成的這個函數行為是什么呢?
其實這里有個default memberwise initialization的東西,就是把每一個data member的值拷貝過去,(貌似遇到指針,會出現淺拷貝的情況)但是他不會拷貝其中的 member class object, 而是以遞歸的方式實施 memberwise initialization。