类的默认成员函数
定义:用户未显式实现,编译器自动生成的成员函数称为默认成员函数。在一个类中,如果不编写,编译器会默认生成以下四个重要的默认成员函数:构造函数、拷贝构造函数、析构函数以及操作符重载。
默认成员函数是 C++ 中重要且复杂的知识点,需要从两个维度进行掌握:
- 了解编译器自动生成的默认函数行为及其适用性
- 当编译器自动生成的默认函数无法满足需求时,掌握自定义实现的方法
一、构造函数
1.1 核心语法
构造函数可以理解为对象的初始化程序。当你根据图纸(类)生产出一个新零件(对象)时,构造函数负责把对象这一刻的状态(如赋值、分配内存)初始化好。
误区提醒:构造函数不是给对象开辟空间的函数,而是给对象完成初始化的函数,对象开辟空间是函数栈帧需要完成的任务。
#include <iostream>
using namespace std;
class Student {
public:
int age;
// 构造函数的语法:类名 (形式参数)
// 1. 无需返回值
// 2. 名称与类名相同
Student() {
age = 18; // 设置默认值
cout << "调用了默认构造函数" << endl;
}
};
int main() {
Student s1; // 3. 自动调用 Student(),age 变为 18
// s1.Student(); // error: 不需要手动调用,在声明对象的时候自动调用
cout << s1.age << endl;
return 0;
}
1.2 常见类型
- 无参构造函数:不带任何参数。
- 带参数的构造函数:允许在创建对象时传入特定值。
- 全缺省构造函数:在未传参时设置默认的初始值,且允许传入特定值。
注意:全缺省构造函数和无参构造函数不能同时出现,因为当你创建一个不带参数的对象时,编译器不知道该调用哪一个。
1.3 默认构造函数
默认构造函数包括以下三种情况:
- 无参构造函数
- 全缺省构造函数
- 编译器自动生成的默认构造函数(当用户未定义任何构造函数时)
总结:不传实参就可以调用的构造函数就叫默认构造函数。


