美文网首页
C++ 析构函数

C++ 析构函数

作者: samtake | 来源:发表于2019-10-09 02:54 被阅读0次

    析构函数(destructor)是一种特殊的成员函数。

    • 类的析构函数名是在类名前加一个波浪好~
    • 累的析构函数是在删除对象的时候被隐式调用
    • 析构函数没有形参页不反悔任何值
    • 析构函数必须是 public类型的
    CreateAndDestructor::CreateAndDestructor(int ID, string msg){
        objectID = ID;
        message = msg;
        
        cout << "Object " << objectID << " 构造函数 runs  " <<message << endl;
    }
    
    
    void create(void){
        cout << "createFunc " << endl;
        CreateAndDestructor fifth(5, "(local automatic in create)");
        static CreateAndDestructor sixth(6, "(local automatic in create)");
        CreateAndDestructor seventh(7, "(local automatic in create)");
    }
    
    CreateAndDestructor::~CreateAndDestructor(){
        cout<<(objectID ==1 || objectID == 6 ? "\n" : "");
        
        cout << "Object " << objectID << " 析构函数 runs   " <<message << endl;
    }
    
    
    void testCreateAndDestructor(){
        cout << "testFunc " << endl;
        CreateAndDestructor second(2, "(local automatic in testFunc)");
        static CreateAndDestructor third(3, "(local automatic in testFunc)");
        
        create();
        
        
        cout << "testFunc : " << endl;
        
        CreateAndDestructor forth(4, "(local automatic in testFunc)");
        
        cout << "\ntestFunc end \n" << endl;
    }
    
    
    testFunc 
    Object 2 构造函数 runs  (local automatic in testFunc)
    Object 3 构造函数 runs  (local automatic in testFunc)
    createFunc 
    Object 5 构造函数 runs  (local automatic in create)
    Object 6 构造函数 runs  (local automatic in create)
    Object 7 构造函数 runs  (local automatic in create)
    Object 7 析构函数 runs   (local automatic in create)
    Object 5 析构函数 runs   (local automatic in create)
    testFunc : 
    Object 4 构造函数 runs  (local automatic in testFunc)
    
    testFunc end 
    
    Object 4 析构函数 runs   (local automatic in testFunc)
    Object 2 析构函数 runs   (local automatic in testFunc)
    
    Object 6 析构函数 runs   (local automatic in create)
    Object 3 析构函数 runs   (local automatic in testFunc)
    Program ended with exit code: 0
    
    • 在全局作用域内定义的对象的构造函数在该文件中的任何其他函数(包括main函数)开始执行之前执行。
    • main函数终止时,调用响应的析构函数。exit函数强制程序立即终止并且不执行自动对象的析构函数。
    • 自动局部对象的 析构函数在执行到达定义该对象的程序点是调用,对应的析构函数是在该对象离开该对像所在的作用域时调用。
    • static局部对象的析构函数只在执行第一次到达定义对象的程序点时调用一次,对应的析构函数是在main函数终止时或者exit函数时调用。

    相关文章

      网友评论

          本文标题:C++ 析构函数

          本文链接:https://www.haomeiwen.com/subject/kcdvyctx.html