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

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

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


我对问题进行了编辑,以使它有一天对任何人都更有用。

我如何编写B的副本ctor(确实是副本ctor?),以便使用a的另一个对象实例(使其为Class A)初始化A(类型为a_inst)。哪些已经定义和初始化过?

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

最佳答案

我会这样

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


除了复制构造函数外,我还提出了两个附加的构造函数,一个可以通过A的l值实例初始化,而另一个可以通过r值实例初始化。根据A的语义,您可能不需要移动版本。

10-05 18:45