1.类的默认成员函数
默认的成员函数就是用户没有显示实现,编译器会自动生成的成员函数称为默认的成员函数。一个类我们在不写的情况下编译器会自动生成以下6个默认的成员函数,这6个最重要的是前面4个,后面的了解一下就可以了。默认成员函数很重要,也⽐较复杂,我们要从两个⽅⾯
2.构造函数
构造函数是特殊的成员函数需要注意的是,构造函数虽然名称叫构造,但是构造函数的主要任务并 不是开空间创建对象(我们常使⽤的局部对象是栈帧创建时,空间就开好了),⽽是对象实例化时初始化 对象。构造函数的本质是要替代我们以前Stack和Date类中写的Init函数的功能,构造函数⾃动调⽤的特点就完美的替代的了之前我们写初始化函数。
以下是构造函数的特点
// 1.⽆参构造函数
Date()
{
_year = 1;
_month = 1;
_day = 1;
}
// 2.带参构造函数
Date(int year, int month, int day)
{
_year = year;
_month = month;
_day = day;
}
// 3.全缺省构造函数
Date(int year = 1, int month = 1, int day = 1)
{
_year = year;
_month = month;
_day = day;
}
3.析构函数
Stack(int n = 4)
{
_a = (STDataType*)malloc(sizeof(STDataType) * n);
if (nullptr == _a)
{
perror("malloc申请空间失败");
return;
}
_capacity = n;
_top = 0;
}
~Stack()
{
cout << "~Stack()" << endl;
free(_a);
_a = nullptr;
_top = _capacity = 0;
}
4.拷贝构造函数
拷贝构造我觉得是c++比较重要的一点也是比较理解的一点接下来让我们来了解一下拷贝构造
拷贝构造就是如果⼀个构造函数的第⼀个参数是⾃⾝类类型的引⽤,且任何额外的参数都有默认值,则此构造函数 也叫做拷⻉构造函数,也就是说拷⻉构造是⼀个特殊的构造函数
拷贝构造的特点
1.拷贝构造是构造函数的一个重载
2.拷贝构造的第一个参数必须是类类型的参数,非则编译器会直接报错,因为语法逻辑会导致无穷递归,因为传值传参会调用拷贝构造会产生无穷递归,
3.c++规定自定义类型对象进行拷贝行为必须调用拷贝构造
4.如果没写显示定义拷贝构造,编译器会自动生成拷贝构造,自动生成的拷贝构造对内置类型的成员会完成值拷贝,对自定义的成员变量会调用他的拷贝构造。