隐含的this指针
- 每个成员函数都有一个指针形参,称为this指针,this指针是隐式的(构造函数比较简单,没有这个隐含的this指针)
- 对象调用成员函数时,对象地址做实参传递给成员函数的第一个形参this指针
- this指针是成员函数隐含指针形参,是编译器自己处理的
类的默认成员函数:
- 构造函数
- 拷贝构造函数
- 析构函数
- 赋值操作符重载
- 取地址操作符重载
- const修饰的取地址操作符重载
构造函数:完成初始化
- 函数名与类名相同
- 无返回值
- 对象实例化时系统自动调用
- 构造函数可以重载(函数名相同,参数不同)
- 无参的构造函数和全缺省的构造函数都认为是缺省构造函数,并且缺省构造函数只有一个
缺省参数的构造函数:
class Date
{
public:
Date(int year=2000,int month=1,int day=1) {
_year=year;
_month=month;
_day=day;
}
void Test() {
Date d1; //调用缺省构造函数
}
}
拷贝构造函数:创建对象时使用同类对象来进行初始化,这是是用的就是拷贝构造函数,它是特殊的构造函数
创建对象,使用一个已有对象来初始化这个准备创建的对象
析构函数:对象的清理,动态开辟空间时需要写析构函数
- 析构函数在类名前加~
- 无参数,无返回值
- 一个类只有一个析构函数。未显示定义,系统自动生成缺省的析构函数
- 对象生命周期结束时,系统自动调用析构函数
- 并不是删除对象,而是做一些清理工作
my vector v1;
my vector v2;
先析构v2,再析构v1
笔试考点
5个C++不能重载的运算符 .* :: sizeof ?: .
类的成员变量初始化方式:
- 初始化列表
- 构造函数体内进行赋值
成员变量按声明顺序依次初始化,而非初始化列表出现的顺序