c++析构函数在什么时候自动调用?

2024-11-28 17:09:11
推荐回答(2个)
回答1:

在对象被创建的时候就会调用构造函数,比如
声明一个类class
a{...},当你在main函数中
a
a

定义一个对象a的时候,
就调用构造函数,默认构造函数都是无参数的
,构造函数就相当给对象a初始化而已,就相当于c语言中
int
a
=
3
初始化a的值而已,以为你在类中是不能直接给private中的类成员赋值的,所以就靠构造函数,不过要注意有参构造和无参构造,默认都是无参的,比如你a
a(1,
3)这样的就不对了
除非你在类中写一个带参数的构造函数。
当函数调用结束的时候,会自动调用析构函数,比如你在clsaa
a
{
public:add().....},
当你a
a;
a.add();后
就自动调用析构,你可以在类中
~a{cout。。。},你就会发现调用
a.add()
后就打出你在析构函数中写的东西,是自动调用的,析构的作用就是释放对象占用的资源。以为默认析构什么也不打印,所以你不会直观看出析构函数什么时候执行,自己在析构中加上打印的语言你就会看到了。希望对你能有所帮助

回答2:

p1.~point();
你自己调用了一次,但是没有析构对象
主函数结尾,程序结束前,销毁对象自动调用析构函数,构造了两个对象调用两次