gpt4 book ai didi

c++ - 我可以通过使用参数构造基对象来从派生类创建对象吗?

转载 作者:行者123 更新时间:2023-11-27 22:32:03 26 4
gpt4 key购买 nike

换句话说,给定一个基类shape和一个派生类rectangle:

class shape
{
public:
enum shapeType {LINE, RECTANGLE};
shape(shapeType type);
shape(const shape &shp);
}

class rectangle : public shape
{
public:
rectangle();
rectangle(const rectangle &rec);
}

我想知道我是否可以通过调用创建一个 rectangle 的实例:

shape *pRectangle = new shape(RECTANGLE);

我如何实现复制构造函数,以便通过调用获得一个新的rectangle:

shape *pNewRectangle = new shape(pRectangle);

最佳答案

简短回答:否

长答案:

你需要一个工厂对象/方法。
您可以将静态工厂方法添加到基类,以创建适当的对象类型。

class Shape
{
static Shape* createShape(shapeType type)
{
switch (type)
{
case RECTANGLE:return new rectangle();
...
}
}
};

个人喜好:

我会选择一个完全不同的类作为工厂,而不是在基类上使用静态方法。原因是每次创建新的 Shape 类时,上述样式都会强制您每次都重新构建 Shape 类。

所以我会将工厂分离到一个 ShapeFactory 类中。

关于c++ - 我可以通过使用参数构造基对象来从派生类创建对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1105058/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com