当前位置:
首页 >
行业知识 >
C++ || 类的八种函数 | 默认成员函数 | 构造函数 | 析构函数 | 拷贝构造函数 | 赋值运算符重载 | const成员函数 | 取地址及const取地址操作符重载
行业知识
C++ || 类的八种函数 | 默认成员函数 | 构造函数 | 析构函数 | 拷贝构造函数 | 赋值运算符重载 | const成员函数 | 取地址及const取地址操作符重载
2026-10-28 04:01:17
来源:互联网转载
默认成员函数
默认成员函数定义
当一个���中什么成员都没有时,简称为空类。
空类中真的什么都没有吗?并不是,在任何类只什么都没有的话,编译器就会自动生成以下6种默认成员函数。
- 默认成员函数:用户没有显式实现,编译器自动生成的成员函数称为默认成员函数。
C++中,6个默认成员函数。
类中的成员函数,不仅仅局限于以下六种,仅仅只是以下六种,在用户没有显式实现的情况,编译器可以自动生成的成员函数。
默认成员函数分类
构造函数
构造函数定义
构造函数是特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,以保证类中的每个成员都有一个合适的初始值,并且在对象整个生命周期内只调用一次。
简单来说,就是类似于初始化Init函数。
构造函数的价值,防止C语言中Init函数忘记。例如,尤其在栈中。
与Init函数,最本质的区别是:可以自动调用。
构造函数语法特性
构造函数是特殊的成员函数。
构造函数的主要任务并不是开空间创造对象,而是初始化对象。
在创建对象的时候,在函数开辟栈帧的时候,空间就已经被开辟出来了。
构造函数的语法特性:
- 函数名与类名相同;
- 无返回值(不是void,而是返回值不用写);
- 对象实例化时编译器自动调用对应的构造函数;
- 构造函数可以重载;
class Date{public://全缺省的构造函数 Date d1Date(int year = 1, int month = 1, int day = 1){_year = year;_month = month;_day = day;}};- 构造函数属于默认成员函数。如果类中没有显式定义构造函数,则C++编译器会自动生成一个无参的默认构造函数;如果显示定义,则编译器不自动生成;
- 编译器自动生成的构造函数对内置类型不做处理,对自定义类型成员调用它的默认成员函数;
- 默认构造函数可被认为有(以下三种只能出现一种):无参的构造函数、全缺省构造函数、编译器默认生成的构造函数。建议使用全缺省构造函数。
- 声明和定义分开,全缺省构造函数中的缺省参数应该写在函数的声明部分,而定义部分不需要写
- 构造函数实例化时,可以直接 类名+实例名(对应的实参)
Date d1;
- 无参的构造函数,传参时不能带括号;
- C++规定,对象实例化时,必须调用构造函数。
构造函数语法特性分析
通过以下代码,可以帮助理解构造函数的基础特性:
#include using namespace std;class Date{private:int _year;int _month;int _day;public:使用Init初始化//void Init(int year, int month, int day)//{//_year = year;//_month = month;//_day = day;//}//使用构造函数(无参)初始化//Date()//// 无参//// 返回类型不需要写//// 对象实例化时自动调用 (主函数中只需要初始化时,就可以自动调用)//// 可以重载//{//_year = 1;//_month = 1;//_day = 1;//}//Date(int year, int month, int day)//// 构造函数可以重载//{//_year = year;//_month = month;//_day = day;//}//全缺省的构造函数Date(int year = 1, int month = 1, int day = 1)// 构造函数可以重载{_year = year;_month = month;_day = day;}void Print(){cout
下一篇:服务器监控怎么开机的视频?