c++ - 如何将基类的私有(private)成员复制到派生类的复制构造函数中

标签 c++ copy-constructor

如标题所示,如果我有 Derived 类的复制构造函数,我也需要复制 Base 类的成员,但是我无权访问私有(private)成员。我如何实现这一点?

最佳答案

您可以通过以下方式实现此目的:

(1) 创建一个基本复制构造函数(不是private)并在派生复制构造函数中调用它。
示例:

class Base {
  private: int i;
  public: Base(const Base& copy) : i(copy.i) {}
};

class Derived : public Base {
  Derived(const Derived& copy) : Base(copy) {}
};

(2) 使基成员被复制为protected;但这是不太可取的方式,因为您是在进行赋值而不是初始化。

(3) 最不推荐的方法是在 class Base 的主体内创建 friend class Derived;。仅在绝对必要时才使用它。

关于c++ - 如何将基类的私有(private)成员复制到派生类的复制构造函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17333562/

相关文章:

c++ - 如何使用自定义错误消息引发错误?

c++ - 具有默认参数的复制构造函数

c++ - 复制构造函数调用 extra

c++ - 在 shared_ptr 的复制构造函数中

c++ - mingw make 文件指南 mingw32-make

java - SWIG:使用 %typemap(javabase) 并在 Java 中调用父类(super class)构造函数

c++ - 将类对象指针传递给用于初始化 C++ 的函数

c++ - C11/C++11 弱内存基准测试

c++ - 为什么我在显式编写复制构造函数后得到垃圾值?

c++ - 删除复制构造函数会破坏继承的构造函数