zoukankan      html  css  js  c++  java
  • 学习笔记---C++析构函数心得

    1.动态分配的对象的析构函数

     1 class man{
     2 public:
     3     man(){
     4       cout<<"man begin"<<endl;
     5     };
     6     ~man(){
     7         cout<<"man end"<<endl;
     8     }
     9 };
    10 
    11 int _tmain(int argc, _TCHAR* argv[])
    12 {
    13    man *m = new man();
    14     return 0;
    15 }

    输出为  :

    man begin

    动态分配的类必须在执行delete函数后才执行析构函数;

    在13行后加入 delete m;

    输出为:

    man begin

    man end

    2.局部的值对象的析构函数

    局部对象的析构函数执行是在其所在的{}结束时执行

     1 class man{
     2 public:
     3     man(){
     4       cout<<"man begin"<<endl;
     5     };
     6     ~man(){
     7         cout<<"man end"<<endl;
     8     }
     9 };
    10 void runMan()
    11 {
    12     man m;
    13    cout <<"man run"<<endl;
    14 }
    15 int _tmain(int argc, _TCHAR* argv[])
    16 {
    17     runMan();
    18     return 0;
    19 }

    输出结果为:

    man begin

    man run

    man end

    假如修改runMan()的实现形式为

    1 void runMan()
    2 {
    3     {
    4        man m;
    5     }
    6    cout <<"run man"<<endl;
    7 }

    输出结果为:

    man begin

    man end

    man run

  • 相关阅读:
    BZOJ 4503: 两个串 FFT
    [FJOI2014]最短路径树问题
    [JSOI2009]游戏Game
    bzoj 2463 [中山市选2009]谁能赢呢?
    [CQOI2007]余数求和
    [NOI2011]兔兔与蛋蛋游戏
    [HNOI2015]实验比较
    bzoj2125 最短路
    [COGS 2877]老m凯的疑惑
    [HNOI2015]开店
  • 原文地址:https://www.cnblogs.com/xijiyuan/p/3714817.html
Copyright © 2011-2022 走看看