gpt4 book ai didi

c++ - 引用抽象类类型的结构

转载 作者:行者123 更新时间:2023-11-30 04:31:16 24 4
gpt4 key购买 nike

基于问题Using array of pointers as parameter to method我想问一下,当有人想创建一个抽象类的引用结构时,有哪些可能的方法可用。之后它充满了不同的对象,这些对象的类显然是从同一个基类派生的。这种结构也必须在作为参数传递的不同类的函数内部“传递”。

我遵循了链接问题中提出的策略(这当然是有缺陷的),因为我无法声明抽象类的对象数组。然而,这是可以通过指针数组实现的。这可以用 vector 来完成而不使用像这样的指针吗:

vector<Square> allSquares;

?如果 vector 本身是通过引用 (&allSquares) 传递的,那么在这种情况下,引用是否会在任何地方保存它们的初始地址?

最佳答案

你不能按值传递或保存抽象对象,你会得到切片,提到here .基本上,您会丢失所有数据。您必须通过引用、指针或智能指针 (shared_ptr) 来存储它们。

到目前为止,最简单的事情就是将所有抽象对象作为 shared_ptr 进行管理。这样你就不必处理复杂的生活问题。您的对象将在不再需要时自行删除。

以下是使用此方法的示例语法。

std::vector<boost::shared_ptr<Shape> > shapes;
shapes.push_back(boost::make_shared<Rect>());

boost::shared_ptr<Shape> foo = shapes[0];
foo->draw(); //Draws the rectangle.

关于c++ - 引用抽象类类型的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8288585/

24 4 0
文章推荐: java - 重复表头
文章推荐: Android:如何保存/恢复数据
文章推荐: java- 数组引用赋值
文章推荐: JSON 对象的 Java 表示
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com