C++ 如何在C++;?
我有一个名为City的类,它的对象依赖于3个变量:C++ 如何在C++;?,c++,class,oop,constructor,destructor,C++,Class,Oop,Constructor,Destructor,我有一个名为City的类,它的对象依赖于3个变量:字符串名、int区域、int人口,以及用于此的构造函数。 我有一个析构函数,看起来像City::~City(){} 在main.cpp中,我正在创建这样一个对象:city1=City(“纽约”,123100000) 之后,我想删除我创建的对象city1,我正在尝试: city1.~City()-什么也没发生 删除城市1或删除[]城市1-Cannon删除类型为“City”的表达式 删除[city1]-预期的lambda表达式体 我应该如何删除
字符串名、int区域、int人口
,以及用于此的构造函数。
我有一个析构函数,看起来像City::~City(){}
在main.cpp中,我正在创建这样一个对象:city1=City(“纽约”,123100000)
之后,我想删除我创建的对象city1
,我正在尝试:
city1.~City()代码>-什么也没发生
删除城市1代码>或删除[]城市1代码>-Cannon删除类型为“City”的表达式
删除[city1]代码>-预期的lambda表达式体
我应该如何删除类对象?我是否应该以某种方式更改析构函数?如果您像这样声明一个
City
对象:
{
City city1 = City("New York", 123, 100000);
// ...
那么删除此对象的正确代码是:
}
<>由于C++对自动存储持续时间的对象有确定性破坏(如City
的析构函数,但在您的情况下,由于它只包含字符串和2int
s,因此隐式析构函数将做正确的事情
我应该如何删除类对象
取决于创建实例的方式。自动、静态和线程本地存储中的对象以及临时对象将自动销毁。所有变量都有其中一个存储类
必须明确销毁动态对象。通常,删除动态分配的对象的理想方法是将所有权转移到智能指针,该智能指针在智能指针被销毁时删除指向的对象
这是一个变量。因此,对象将自动销毁
我应该换个析构函数吗
取决于班级的职责。通常,类的理想设计是不需要用户定义的析构函数
我正在努力:
city1.~City()代码>-什么也没发生
在你的情况下,这很可能是错误的。如果不创建另一个实例来代替已销毁的实例,那么当变量被销毁时,程序的行为将是未定义的
删除城市1代码>或删除[]城市1代码>-Cannon删除类型为“City”的表达式
city1
不是指针,因此不能删除
删除[city1]代码>-预期的lambda表达式体
< > C++中没有这样的语法。< /P>请,A。如何删除一个实例很大程度上取决于它是如何构造的。每一本合理的C++书都应该提到这个话题……-)你从来没有用new
获取过对象,因此没有任何东西可以删除
。只是在第二眼看到city1=City(“纽约”,123100000)
。在这种情况下,您不会删除它。当您离开作用域时,它会自动删除。您根本不应该尝试删除它-对象将自动销毁。你可能应该投资一家公司。
City city1 = City("New York", 123, 100000)