gpt4 book ai didi

C++ 将指针从一个派生类转换为另一个派生类

转载 作者:行者123 更新时间:2023-11-28 00:43:51 25 4
gpt4 key购买 nike

假设我有一个类 shape 和 2 个派生类 circle 和 square。代码是:

Shape* s1 = new circle;

现在我想将 s1 赋值给 square,同时保留两者共有的变量。

Shape* s1 = new Square;

我该怎么做?

最佳答案

通过使用引用基类的构造函数,您可以轻松复制常见的 Shape 数据:

#include <assert.h>

enum class Color { red, green, blue };

class Shape {
public:
Shape() : color(red) { }
void setColor(Color new_color) { color = new_color; }
Color getColor() const { return color; }
private:
Color color;
};

class Square : public Shape {
public:
Square() { }
// Using explicit constructor to help avoid accidentally
// using the wrong type of shape.
explicit Square(const Shape &that) : Shape(that) { }
};

class Circle : public Shape {
public:
Circle() { }
explicit Circle(const Shape &that) : Shape(that) { }
};

int main(int,char**)
{
Circle circle;
circle.setColor(Color::blue);
Square square(circle);
assert(circle.getColor()==square.getColor());
}

关于C++ 将指针从一个派生类转换为另一个派生类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17392187/

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