我正在课堂上学习 C++,并且正在尝试使用虚拟创建/克隆函数返回指向派生对象的指针。
我找到了这个实现,并即将围绕它构建http://www.cs.uregina.ca/Links/class-info/210/C++FAQ/virtual-functions.html#[20.5]
我不明白的是,在 clone() 或 create() 退出它们的块之后,返回的指针实际上是如何指向任何相关数据的?
有没有更好的方法,或者我需要为每个案例编写一个函数?
非常感谢
class Shape {
public:
virtual ~Shape() { } // A virtual destructor
virtual void draw() = 0; // A pure virtual function
virtual void move() = 0;
// ...
virtual Shape* clone() const = 0; // Uses the copy constructor
virtual Shape* create() const = 0; // Uses the default constructor
};
class Circle : public Shape {
public:
Circle* clone() const { return new Circle(*this); }
Circle* create() const { return new Circle(); }
// ...
};