gpt4 book ai didi

c++ - 抽象类c++的对象作为函数的参数

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:26:55 26 4
gpt4 key购买 nike

我有以下代码:

class Region {
public:
virtual Region* clone() const = 0;
virtual ~Region() {}
bool contains(double x, double y) const = 0;
}

class UnionRegion : public Region {
shared_ptr<Region> r1;
shared_ptr<Region> r2;
public:
UnionRegion(const Region& r1, const Region& r2) :
r1(r1.clone()), r2(r2.clone()) {}
.
.
.
}

Region 是一个抽象类。我不明白 UnionRegion 的构造函数如何接收 Region 类型的对象,因为我们如何创建抽象类的对象?

此外,将 shared_ptr 保存到 Region 有什么意义?我知道因为 Region 是抽象的,我们需要一个指针,但是 Region 甚至没有私有(private)成员,所以基本上我不能用那个指针做任何事情。

谢谢!

最佳答案

Region 是一个抽象类,但它从未被实例化。对 const Region 的引用绑定(bind)到 Region 的任何子类的对象(很像指向 const Region 的指针)。所以 UnionRegion 的构造函数引用了作为 Region 子类的任意两个对象。

关于c++ - 抽象类c++的对象作为函数的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17905932/

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