用基类复制构造函数c++并派生类
Copy contructor c++ with base and derive class
我有两个派生类(Student
和Teacher
),它们继承自基类People
。当我想声明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
或其他一切来克隆这些变体而不使用默认代码),那么我该怎么做呢?非常感谢。抱歉我英语不好。
您可以编写一个执行以下操作的复制构造函数:
People p(*st);
p
的类型将是People
而不是Student
。如果您想创建一个Student
,那么您可以向People
添加一个名为clone
的virtual
函数,如下所示:
class People {
...
virtual People *clone() = 0;
}
然后在每个派生类中实现它以返回派生类型的实例。这样你的用法是:
People *st = new Student();
People *stClone = st->clone();
这里,CCD_ 19的类型是CCD_ 20而不是CCD_ 21。
相关文章:
- 为什么使用 "this" 指针调用派生成员函数?
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 在派生函数中指定void*参数
- 如何通过派生类函数更改基类中的向量
- 如何委托派生类使用其父构造函数?
- 如何使用单独文件中的派生类访问友元函数对象
- 派生类销毁的最佳实践是什么
- 如何使用基类指针引用派生类成员
- 派生类是否可以在抽象工厂设计模式中具有数据成员
- 使用基类指针创建对象时,缺少派生类析构函数
- 如何引用基类的派生类?
- 存储模板类型以强制转换回派生<T>
- 需要从 istream 和 ostream 派生 iostream
- 在 C++ 中用派生类型重写成员函数
- 具有多个类、派生类的C++正向声明
- 有没有一种"cleaner"的方法可以在指向基的指针向量中找到派生类的第一个实例?
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 如果基类包含双指针成员,则派生类的构造函数
- 为什么此派生对象无法访问基类的后递减方法?
- 有没有比在库中添加一个并非由所有派生类实现的新虚拟函数更好的设计实践