行业知识
【C++】C++入门—初识构造函数 , 析构函数,拷贝构造函数,赋值运算符重载
2026-10-23 10:31:09
来源:互联网转载
C++入门
- 六个默认成员函数
- 1 构造函数
- 语法
- 特性
- 2 析构函数
- 语法
- 特性
- 3 拷贝构造函数
- 特性
- 4 赋值运算符重载
- 运算符重载
- 赋值运算符重载
- 特例:前置++ 与 后置++
- 前置++:返回+1之后的结果
- 后置++:
- Thanks♪(・ω・)ノ谢谢阅读!!!
- 下一���文章见!!!
六个默认成员函数
如果一个类中什么成员都没有,简称为空类。
空类中真的什么都没有吗? 并不是
任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。
默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数
我们实现了,编译器就不会生成了
1 构造函数
构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,以保证
每个数据成员都有 一个合适的初始值,并且在对象整个生命周期内只调用一次
语法
- 函数名与类名相同。
- 无返回值
- 对象实例化时编译器自动调用对应的构造函数
- 构造函数可以重载(最好实现一个全缺省的构造函数)
class Date {public:Date(int year = 2024, int month = 1, int day = 1) {_year = year;_month = month;_day = day;}void show() {cout _year Date today(2024, 2, 18);//默认构造Date yesterday(2024, 2, 17);//默认构造today.show();yesterday.show();return 0;}public:Time(){cout private:// 基本类型(内置类型)int _year;int _month;int _day;// 自定义类型Time _t;};int main(){Date d;return 0;}public:Stack(size_t capacity = 3){_array = (DataType*)malloc(sizeof(DataType) * capacity);if (NULL == _array){perror("malloc申请空间失败!!!");return;}_capacity = capacity;_size = 0;}void Push(DataType data){// CheckCapacity();_array[_size] = data;_size++;}// 析构函数~Stack(){//如果 不为空if (_array){ // 释放指针free(_array);//初始化_array = NULL;_capacity = 0;_size = 0;}}private:DataType* _array;int _capacity;int _size;};void TestStack(){Stack s;s.Push(1);s.Push(2);//生命周期结束自动析构清理}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 = 2024, int month = 1, int day = 1) {_year = year;_month = month;_day = day;}bool operator==( const Date& d2) {return _year == d2._year&& _month == d2._month&& _day == d2._day;}void show() {cout Date today(2024, 2, 18);Date yesterday(2024, 2, 17);today.show();yesterday.show();cout public:Date(int year = 2024, int month = 1, int day = 1) {_year = year;_month = month;_day = day;}//运算符重载bool operator==( const Date& d2) {return _year == d2._year&& _month == d2._month&& _day == d2._day;}//赋值运算符重载Date& operator=(const Date& d){if(this != &d){_year = d._year;_month = d._month;_day = d._day;}return *this;}void show() {cout Date today(2024, 2, 18);Date day = today;today.show();day.show();return 0;}public:Stack(size_t capacity = 10){_array = (DataType*)malloc(capacity * sizeof(DataType));if (nullptr == _array){perror("malloc申请空间失败");return;}_size = 0;_capacity = capacity;}void Push(const DataType& data){// CheckCapacity();_array[_size] = data;_size++;}~Stack(){if (_array){free(_array);_array = nullptr;_capacity = 0;_size = 0;}}private:DataType *_array;size_t _size;size_t _capacity;};int main(){Stack s1;s1.Push(1);s1.Push(2);s1.Push(3);s1.Push(4);Stack s2;s2 = s1;return 0;} _day += 1;return *this;}Date temp(*this);_day += 1;// temp是临时对象,因此只能以值的方式返回,不能返回引用return temp;}
上一篇:哪里的机房最好?
下一篇:揭秘彩票网站源码开发全攻略!