【发布时间】:2021-01-26 20:00:52
【问题描述】:
我有一个名为 City 的类,它的对象依赖于 3 个变量:string name, int area, int population 和一个构造函数。
我有一个析构函数,看起来像这样City::~City() {}
在 main.cpp 中,我正在创建一个像这样的对象:City city1 = City("New York", 123, 100000)
之后我想删除我创建的对象city1,我正在尝试:
-
city1.~City();- 没有任何反应 -
delete city1;或delete[] city1;- Cannon 删除“城市”类型的表达式 -
delete [city1];- 预期的 lambda 表达式主体
我应该怎么做才能删除类对象?我应该以某种方式更改析构函数吗?
【问题讨论】:
-
请发minimal reproducible example。如何删除一个实例很大程度上取决于它是如何构造的。顺便提一句。每本合理的 C++ 书籍都应该提到这个话题…… ;-)
-
您从未使用
new获取对象,因此delete没有任何内容。 -
第二眼看到
City city1 = City("New York", 123, 100000)。在这种情况下,你不要删除它。当您离开范围时,它会自动删除。 -
您根本不应该尝试删除它 - 该对象将被自动销毁。您可能应该投资good book。
标签: c++ class oop constructor destructor