构造函数(构造器)
作用:
- 给类中的成员初始化
说明:
-
构造函数的函数名与类名相同
-
可以有参数,但是没有返回值类型
-
可以重载,可以缺省
-
没有返回值类型,但是有参数
-
定义对象的时候自动调用,且一生中只调用一次构造
-
给成员赋初值的操作还可以直接在类函数头进行(见代码)
-
const int x; 等价于 int const x;
初始化形参列表:
- 格式:类名::类名():成员变量1(),成员变量2(){}
关于构造的显示调用和隐式调用
显示调用格式:
- 类名::自定义类名(参数);
隐式调用格式:
- 类名::自定义类名 = 参数;
析构函数
格式:~类名();
作用: 回收对象(类中成员)申请的内存
说明:
-
没有参数也没有返回值类型
-
一个类中只允许存在一个析构函数
-
只有在对象死亡的时候才会自动调用
补充:
-
{}——作用域,在{}里定义的变量,出了{}就会自动回收
-
类在内存中存放在栈区,在程序运行结束的时候,类所占内存会自动回收
-
new-delete申请内存的方式会执行构造析构函数,而malloc-free方式不会调用
-
delete 只调用一次析构函数 delete[]调用多次析构函数
代码实例
头文件
#pragma once
class str
{
private:
char* st;
public:
str();
~str();
};
.cpp文件
#include "str.h"
str::str()
{
st