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

2022-01-20  本文已影响0人  NoBugException
一、构造函数

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

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 的空间释放;

[本章完...]

上一篇 下一篇

猜你喜欢

热点阅读