美文网首页
C++<第十五篇>:构造函数和析构函数

C++<第十五篇>:构造函数和析构函数

作者: NoBugException | 来源:发表于2022-01-20 18:43 被阅读0次
    一、构造函数

    当一个实例(对象)被创建时,构造函数就会被调用,那么构造函数的作用是什么呢?
    当建立一个对象时,常常将某些初始化操作放在构造方法中执行,比如:

    Person.h 文件:

    Person(); // 构造方法
    

    Person.cpp文件:

    Person::Person() {
        mIndex = 0;
    }
    

    构造函数没有类型、没有返回值、没有修饰符,以下代码是构造函数的声明:

    Person(); 
    Person(int a); 
    Person(int a, char b); 
    Person(int a, char b, float c); 
    

    Person()属于默认构造函数,即使代码中不写,当Person实例被创建时,也会被默认执行。

    当执行以下代码时,Person被创建:

    Person p;
    

    当构造方法中存在参数时,代码如下:

    Person.h 文件:

    Person(int index, char name[25], short age); // 构造方法
    

    Person.cpp文件:

    Person::Person(int index, char name[25], short age) {
        mIndex = index;
        strcpy_s(mName, strlen(name) + 1, name);
        mAge = age;
    }
    

    调用:

    int index = 2;
    char name[] = "wangwu";
    short age = 14;
    
    Person person(index, name, age);
    
    cout << person.getIndex() << endl;
    cout << person.getName() << endl;
    cout << person.getAge() << endl;
    
    二、析构函数

    构造函数和析构函数时类体中定义的比较特殊的两个成员函数,他们都没有返回值。
    析构函数名标识符就是在类名前面加“~”符号。

    构造函数主要是用来在对象创建时,给对象中的一些数据成员赋值,即初始化对象。
    然而,析构函数恰恰相反,它的功能是用来释放一个对象,在对象删除前,用它来做一些清理工作。

    构造函数如下:

    char* mName;
    
    Person::Person() {
        mName = new char[20];
    }
    

    析构函数如下:

    Person::~Person() {
        delete[] mName;
    }
    

    构造函数最先被执行,为 mName 分配空间;
    析构函数最后被执行,将 mName 的空间释放;

    [本章完...]

    相关文章

      网友评论

          本文标题:C++<第十五篇>:构造函数和析构函数

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