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。

相关文章:

  • 2021-09-25
  • 2022-12-23
  • 2021-11-07
  • 2021-12-22
  • 2021-07-14
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-10-20
  • 2021-11-04
  • 2022-12-23
  • 2022-12-23
  • 2021-07-23
  • 2022-12-23
相关资源
相似解决方案