小工具知识网

当前位置: 首页 > 行业知识 > 【C++】C++入门—初识构造函数 , 析构函数,拷贝构造函数,赋值运算符重载

行业知识

【C++】C++入门—初识构造函数 , 析构函数,拷贝构造函数,赋值运算符重载

2026-10-23 10:31:09 来源:互联网转载

C++入门

  • 六个默认成员函数
  • 1 构造函数
    • 语法
    • 特性
    • 2 析构函数
      • 语法
      • 特性
      • 3 拷贝构造函数
        • 特性
        • 4 赋值运算符重载
          • 运算符重载
          • 赋值运算符重载
          • 特例:前置++ 与 后置++
            • 前置++:返回+1之后的结果
            • 后置++:
            • Thanks♪(・ω・)ノ谢谢阅读!!!
            • 下一���文章见!!!

              六个默认成员函数

              如果一个类中什么成员都没有,简称为空类。

              空类中真的什么都没有吗? 并不是

              任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。

              默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数

              我们实现了,编译器就不会生成了

              1 构造函数

              构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,以保证

              每个数据成员都有 一个合适的初始值,并且在对象整个生命周期内只调用一次

              语法

              1. 函数名与类名相同。
              2. 无返回值
              3. 对象实例化时编译器自动调用对应的构造函数
              4. 构造函数可以重载(最好实现一个全缺省的构造函数)
              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;}

上一篇:哪里的机房最好?

下一篇:揭秘彩票网站源码开发全攻略!