C++ 析构函数

   //析构函数(Destructor):(析构器),在对象销毁的时候自动调用,一般用于完成对象的清理工作.
   特点:函数名以~开头,与类同名,无返回值(void都不能写),无参,不可以重载,有且只有一个析构函数.
   注意:通过malloc分配的对象free的时候不会调用构造函数
   
   
   struct Person {
       // 构造函数:对象创建的时候调用
       Person(){
       cout << "Person()" << endl;
       this->m_age = 0;
       }
       // 析构函数:对象销毁的时候调用(内存被回收了)
       ~Person(){
       cout << "~Person()" << endl;
       }
   }
   
   // 注意用class创建对象的时候,一定要在构造函数和析构函数上面添加上public,不然默认是private,不可调用
   class Student {
       int m_age;
       public:
       // 构造函数:对象创建的时候调用
       Student(){
       cout << "Student()" << endl;
       this->m_age = 0;
       }
       // 析构函数:对象销毁的时候调用(内存被回收了)
       ~Student(){
       cout << "~Student()" << endl;
       }
   }
   
   
   void test(){
        Person person;
   }
   
   int main(){
       test();
       getchar();
   
       // 大括号也有作用域的作用,在栈空间中不需要我们手动管理内存
       {
            Person person;
       }
   
       // 堆空间用new,也调用了构造函数和析构函数
       Person *p = new Person();
       delete p;
   
       // 堆空间用malloc,不会调用构造函数和析构函数,因为malloc只负责分配内存和回收内存
       Person *p1 = (Person *)malloc(sizeof(Person));
       free(p);

       return 0
   }
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值