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;
    }
    
  • 相关阅读:
    重温CLR(七 ) 属性和事件
    重温CLR(六)方法和参数
    KMP算法
    Webstorm 2019最新激活码
    bash: cd: too many arguments 报错
    mongoDB线上数据库连接报错记录
    常见的 eslint 基本报错信息
    git 查看项目代码统计命令
    npm 删除指定的某个包以及再次安装
    vue.config.js常用配置
  • 原文地址:https://www.cnblogs.com/Sico2Sico/p/5384259.html
Copyright © 2011-2022 走看看