我被问到一个问题,一个班级有,multiple constructors但为什么它只有one destructor?
我举了下面的例子,
class abc
{
public:
int a;
abc()
{
cout << "Default\n";
}
abc(int)
{
cout << "Int\n";
}
~abc()
{
cout << "Destructor\n";
}
};
int main()
{
abc ab;
abc a(5);
}
Run Code Online (Sandbox Code Playgroud)
我在abc之前解释过(5); 被调用的析构函数将被调用,因此在特定时间点只会有一个对象.我现在在我的电脑上运行上面的代码,但它给了我输出
Default
Int
Destructor
Destructor
Run Code Online (Sandbox Code Playgroud)
如果是这样,那么我们为什么one destructor呢?
析构函数没有参数,因此只能有一个参数.但是,您可以拥有多个构造函数,因为您可以重载构造函数,这是Destructors无法实现的.还要添加析构函数用于终止类的实例并释放它正在使用的所有资源.当您摧毁对象时没有任何可选项.调用析构函数时,实例将不存在.
虽然是一个非常奇怪的例子来解释它,但是如果你有1个苹果和1个番石榴,那么你将使用1刀切割它.;)
析构函数通常用于释放内存,并在销毁对象时对类对象及其类成员执行其他清理.当该对象超出范围或被显式删除时,将为类对象调用析构函数.
在abc之前(5); 被调用的析构函数将被调用
不会因为隐式调用析构函数而不会调用它.
在旁注: -
但是,如果您计划明确调用析构函数(大多数程序员不会建议),那么管理资源将完全是您的责任.编译器不会处理它,它可能会导致严重的内存问题.您可以查看此C++ FAQ解释它.
| 归档时间: |
|
| 查看次数: |
8903 次 |
| 最近记录: |