行业知识
【C++】构造函数和析构函数详解
2026-10-30 23:38:57
来源:互联网转载
个人主页 : zxctscl
���章封面来自:艺术家–贤海林
如有转载请先通知
文章目录
- 1. 类的6个默认成员函数
- 2. 构造函数
- 2.1 概念
- 2.2 构造函数特性
- 2.2.1 语法特性
- 2.2.2 其他特性
- 3. 析构函数
- 3.1 概念
- 3.2 特性
- 4. 构造与析构顺序
1. 类的6个默认成员函数
如果一个类中什么成员都没有,简称为空类。
空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。
默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数。
重点关注前面四个。
2. 构造函数
在写栈或者队列时可能会忘记初始化,就会开始其他操作,所以c++就提出构造函数。
2.1 概念
对于以下Date类:
class Date{public:void Init(int year, int month, int day){_year = year;_month = month;_day = day;}void Print(){cout Date d1;d1.Print();Date d2(2024, 2, 23);d2.Print();Date d3(2024);d3.Print();return 0;}public://无参构造函数Date(){_year = 1;_month = 1;_day = 1;}//带参构造函数Date(int year, int month, int day){_year = year;_month = month;_day = day;}void Print(){cout Date d1;// 调用无参构造函数d1.Print();Date d2(2024, 2, 23);// 调用带参的构造函数d2.Print();return 0;}public:Date(int year = 1, int month = 1, int day = 1){_year = year;_month = month;_day = day;}void Print(){cout Date d3(2024);d3.Print();return 0;}public:Date(){_year = 1;_month = 1;_day = 1;}Date(int year = 1, int month = 1, int day = 1){_year = year;_month = month;_day = day;}void Print(){cout Date d1;d1.Print();return 0;}public:void Print(){cout Date d1;d1.Print();return 0;}public:Time(){cout private:// 基本类型(内置类型)int _year;int _month;int _day;// 自定义类型Time _t;};int main(){Date d;return 0;}public:Date(int year, int month, int day) { _year = year; _month = month; _day = day; }void Print(){cout Date d1; d1.Print(); return 0;}public:Date(){_year = 1;_month = 1;_day = 1;}Date(int year, int month, int day) { _year = year; _month = month; _day = day; }void Print(){cout Date d1; d1.Print(); return 0;}public:Date(){_year = 1;_month = 1;_day = 1;}Date(int year, int month, int day){_year = year;_month = month;_day = day;}void Print(){cout cout Date d2;}int main(){func();Date d1;d1.Print();return 0;}public:Date(){_year = 1;_month = 1;_day = 1;}Date(int year, int month, int day){_year = year;_month = month;_day = day;}void Print(){cout cout Date d2;}class Stack{public:Stack(size_t capacity = 3){_array = (int*)malloc(sizeof(int) * capacity);if (NULL == _array){perror("malloc申请空间失败!!!");return;}_capacity = capacity;_size = 0;}void Push(int data){// CheckCapacity();_array[_size] = data;_size++;}bool Empty(){return _size == 0;}int Top(){return _array[_size - 1];}void Pop(){//..}~Stack(){cout free(_array);_array = nullptr;}_size = _capacity = 0;}private:int* _array;int _capacity;int _size;};int main(){func();Date d1;d1.Print();Stack st1;return 0;}public:~Time(){cout private:// 基本类型(内置类型)int _year = 1970;int _month = 1;int _day = 1;// 自定义类型Time _t;};int main(){Date d;return 0;}public:Date(int year = 1){_year = year;}~Date(){cout Date d1(1);Date d2(2);return 0;}public:Date(int year = 1){_year = year;}~Date(){cout Date d3(3);static Date d4(4);}int main(){Date d1(1);Date d2(2);func();return 0;}
下一篇:ios怎么安装服务器系统教程?