关于c++的默认拷贝构造函数

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。

原文地址:https://www.cnblogs.com/codemeta-2020/p/12634002.html