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。