c++ - 使用基类和派生类复制构造函数 c++

标签 c++

我有两个继承自基类People 的派生类(StudentTeacher)。 当我想声明 2 个变量 st 时,tc 的类型指针指向 People,但指向 Student 的对象和 Teacher 类型添加到这个链接中:

class Node
{
private:
    People* data;
    Node* next;
};

所以我写:

People * st = new Student(...);
People * tc = new Teacher(...);

现在我想写一个复制构造函数来克隆st, tc(比如People *st1 = st 或其他任何东西来克隆它们variales 不使用默认代码)那么我该怎么做呢? 谢谢你! p/s:抱歉我的英语不好。

最佳答案

您可以编写一个执行以下操作的复制构造函数:

People p(*st);

p 的类型将是 People 而不是 Student。如果您想创建一个Student,那么您可以向People 添加一个virtual 函数,称为clone,如下所示:

class People {
...

  virtual People *clone() = 0;
}

然后在每个派生类中实现它以返回派生类型的实例。这样您的用法将是:

People *st = new Student();
People *stClone = st->clone();

这里stClone的类型是Student而不是People

关于c++ - 使用基类和派生类复制构造函数 c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29726690/

相关文章:

c++ - 在 C++ 中初始化 vector 类成员

c++ - 条件表达式的计算结果可以在C++中返回吗

c++ - 在myfile中未在此范围内声明

c++ - MSVC 警告 4611 关于 setjmp w/POD 结构

c++ - 一道C++接口(interface)(纯虚类)/多重继承/虚继承的设计题

c++ - 编译 C++ 代码时出现编译错误

c++ - Eigen-3.3.5 上的 DiagonalPreconditioner 包装器,用于无矩阵稀疏求解器 CG

c++ - clock_t是否计算所有线程、c++、pthreads的时间?

c++ - 堆栈上的 Const C 字符串?

c++ - 无法捕获模板特化方法抛出的异常