小工具知识网

当前位置: 首页 > 行业知识 > 【C++】构造函数和析构函数详解

行业知识

【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;}

上一篇:php怎么部署到apache服务器?

下一篇:ios怎么安装服务器系统教程?