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

时间:2015-04-19 06:45:09

标签: c++

我有两个从基类Student继承的派生类(TeacherPeople)。 当我想声明2变量sttc时带有指向People的类型指针,但指向要添加到此链接的StudentTeacher类型的对象-Link:

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

所以我写道:

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

现在我想编写一个复制构造函数来克隆sttc(如People *st1 = st或其他所有内容来克隆这些变量而不使用默认代码)所以我该怎么办? 谢谢! p / s:抱歉我的英语不好。

1 个答案:

答案 0 :(得分:1)

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

People p(*st);

p的类型将是People,而不是Student。如果您要创建Student,则可以将virtual函数添加到名为People的{​​{1}},如下所示:

clone

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

class People {
...

  virtual People *clone() = 0;
}

此处People *st = new Student(); People *stClone = st->clone(); 的类型为stClone,而非Student