C++ 中的简单复制构造函数

Simple copy constructor in C++

假设我们在 C++ 中有两个 类:

Class A{
      public:
          A();
      private:
          int k;
};

Class B{
      public:
          B();
      private:
          A a;
};

我编辑我的问题,这样它对有朝一日达到它的人更有帮助。

我如何编写 B 的复制构造函数(它确实是一个复制构造函数?)以使用另一个对象实例初始化 a(属于 Class A 类型) A(假设为a_inst)之前已经定义和初始化了?

换句话说,ctor B() 的代码是什么?

Class A{
      public:
          A();
          A(const A& obj);
      private:
          int k;
};

Class B{
      public:
          B();
          B(const B& obj)
             : a(obj.a) { }
          B(const A& obj)
             : a(obj) { }
      private:
          A a;
};

我会这样做

B(const A &paramA) : a(paramA) {}
B(A &&paramA) : a(move(paramA)) {} 
B(const B &src) : a(src.a) {}

除了复制构造函数之外,我还提出了两个额外的构造函数,一个可以由 A 的左值实例初始化,另一个用于右值实例。根据 A 的语义,您可能不需要移动版本。