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

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

所以我写:
People * st = new Student(...);
People * tc = new Teacher(...);

现在,我想编写一个复制构造器来克隆sttc(例如People *st1 = st或其他所有东西来克隆这些变量,而不使用默认代码),那么我该怎么做?
谢谢!
p / s:对不起,我的英语不好。

最佳答案

您可以编写执行以下操作的副本构造函数:

People p(*st);
p的类型将是People,而不是Student。如果要创建Student,则可以将virtual函数添加到名为Peopleclone中,如下所示:
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/

10-13 06:10