zoukankan      html  css  js  c++  java
  • c++ 析构函数

    1析构函数.

    #include<iostream>
    #include <stdlib.h>
    #include <string.h>
    using namespace std;
    struct Student{
        int id=1001;//成员变量或对象
        char *name=nullptr;
        int age=20;
        int score=99;
        Student(){cout<<"student default construction!"<<endl;}
        Student(int i,const char*n, int a,int s){
            id=i;
            if(n){
                name =(char*)malloc(strlen(n)+1);
                strcpy(name,n);
            }
            age=a;score=s;
        }
    
        //析构函数是释放初始化的变量(在构造函数里做过内存申请的)
        //析构函数不可以重载
        ~Student()
        {
            cout<<"called destructor!"<<endl;
            if(name)free(name);
        }
    
    };//end class Student
    
    int main()
    {
        Student stu1(1002,"lisi",20,90);
    //  Student *pstu1 = new Student();
        cout<<stu1.name<<endl;
        return 0;
    }

    2 构造和析构的顺序

    #include<iostream>
    #include <stdlib.h>
    #include <string.h>
    using namespace std;
    struct Student{
        int id=1001;//成员变量或对象
        char *name=nullptr;
        int age=20;
        int score=99;
        Student(){cout<<"student default construction!"<<endl;}
        Student(int i,const char*n, int a,int s){
        cout<<"student "<<n<<" construction!"<<endl;
            id=i;
            if(n){
                name =(char*)malloc(strlen(n)+1);
                strcpy(name,n);
            }
            age=a;score=s;
        }
        //析构函数是释放初始化的变量
        //析构函数不可以重载
        ~Student()
        {
            cout<<"student "<<name<<" destructor!"<<endl;
            if(name)free(name);
        }
    
    };//end class Student
    
    int main()
    {
        Student stu1(1002,"lisi",20,90);
        Student stu2(1003,"maliu",20,90);
    //  cout<<stu1.name<<endl;
        return 0;
    }

    3 类类型成员的构造和析构

    #include<iostream>
    #include <stdlib.h>
    #include <string.h>
    using namespace std;
    struct book_bag{
        int color;
        int book_sum;
        book_bag(){
            cout<<"book default constrcution!"<<endl;
        }
        book_bag(int c, int b){
            cout<<"book constrcution!"<<endl;
            color =c,book_sum = b;
        }
        ~book_bag(){
            cout<<"book destrcutor!"<<endl;
        }
    };
    struct Student{
        int id=1001;//成员变量或对象
        char *name=nullptr;
        int age=20;
        int score=99;
        book_bag bg;
    
        Student(){cout<<"student default construction!"<<endl;}
        Student(int i,const char*n, int a,int s){
        cout<<"student "<<n<<" construction!"<<endl;
            id=i;
            if(n){
                name =(char*)malloc(strlen(n)+1);
                strcpy(name,n);
            }
            age=a;score=s;
        }
        //析构函数是释放初始化的变量
        //析构函数不可以重载
        ~Student()
        {
            cout<<"student "<<name<<" destructor!"<<endl;
            if(name)free(name);
        }
    
    };//end class Student
    
    int main()
    {
        Student stu1(1002,"lisi",20,90);
        Student stu2(1003,"maliu",20,90);
    //  cout<<stu1.name<<endl;
        return 0;
    }
    
  • 相关阅读:
    java定时读取文件
    Java面试:投行的15个多线程和并发面试题(转)
    读取一个文件,给定一个字符串,判断这个字符串在文件中出现的次数
    随机产生10个数,并每个数给定一个序号,然后将这10个数按照从小到大的顺序输出来,并带上序号输出
    找出给定字符串中出现最多的字符和次数
    公司开发部门GIT与SVN 之争
    浅谈Hibernate中的三种数据状态
    MyBatis框架的XML数据访问Dao层接口的组合使用
    浅谈WebLogic和Tomcat
    为什么我们不要 .NET 程序员
  • 原文地址:https://www.cnblogs.com/Sico2Sico/p/5384259.html
Copyright © 2011-2022 走看看