C++中类的6个默认成员函数【构造函数】 &&【析构函数】

2024-04-08 1413阅读

文章目录

    • 前言
    • 构造函数
      • 构造函数的概念
      • 构造函数的特性
      • 析构函数

        前言

        在学习C++我们必须要掌握的6个默认成员函数,接下来本文讲解2个默认成员函数

        构造函数

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

        • 空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。

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

          class Date {};
          

          C++中类的6个默认成员函数【构造函数】 &&【析构函数】

          构造函数的概念

          • 首先我们看下面的代码来引入一下构造函数
            class Date
            {
            public:
            	void Init(int year, int month, int day)
            	{
            		_year = year;
            		_month = month;
            		_day = day;
            	}
            	void Print()
            	{
            		cout 
            	Date d1;
            	d1.Init(2022, 7, 5);
            	d1.Print();
            	Date d2;
            	d2.Init(2022, 7, 6);
            	d2.Print();
            	return 0;
            }
            
            public:
            	// 1.无参构造函数
            	Date()
            	{
            		_year = 1;
            		_month = 1;
            		_day = 1;
            	}
            	// 2.带参构造函数
            	Date(int year, int month, int day)
            	{
            		_year = year;
            		_month = month;
            		_day = day;
            	}
            private:
            	int _year;
            	int _month;
            	int _day;
            };
            void TestDate()
            {
            	Date d1; // 调用无参构造函数
            	Date d2(2015, 1, 1); // 调用带参的构造函数
            	Date d3();
            }
            
            public:
            	Date(int year = 1, int month = 1, int day = 1)
            	{
            		_year = year;
            		_month = month;
            		_day = day;
            	}
            	void print()
            	{
            		cout 
            	_year = 1;
            	_month = 1;
            	_day = 1;
            }
            Date(int year = 1, int month = 1, int day = 1)
            {
            	_year = year;
            	_month = month;
            	_day = day;
            }
            
            public:
            	void Print()
            	{
            		cout 
            	Date d1;
            	d1.Print();
            	return 0;
            }
            
            public:
            	A()
            	{
            		cout 
            public:
            	void Print()
            	{
            		cout 
            	Date d1;
            	d1.Print();
            	return 0;
            }
            
            public:
            	A()
            	{
            		cout 
            public:
            	void Print()
            	{
            		cout 
            	Date d1;
            	d1.Print();
            	return 0;
            }
            
            public:
            	Stack()
            	{
            		//....
            		cout 
            private:
            	Stack st1;
            	Stack st2;
            };
            int main()
            {
            	MyQueue q;
            	return 0;
            }
            
            public:
            	Stack(size_t capacity = 3)
            	{
            		_array = (DataType*)malloc(sizeof(DataType) * capacity);
            		if (nullptr == _array)
            		{
            			perror("malloc申请空间失败!!!");
            			return;
            		}
            		_capacity = capacity;
            		_size = 0;
            	}
            	void Push(DataType data)
            	{
            		// CheckCapacity();
            		_array[_size] = data;
            		_size++;
            	}
            private:
            	DataType* _array;
            	int _capacity;
            	int _size;
            };
            void TestStack()
            {
            	Stack s;
            	s.Push(1);
            	s.Push(2);
            }
            
            public:
            	Stack(size_t capacity = 4)
            	{
            		_array = (DataType*)malloc(sizeof(DataType) * capacity);
            		if (nullptr == _array)
            		{
            			perror("malloc申请空间失败!!!");
            			return;
            		}
            		_capacity = capacity;
            		_size = 0;
            	}
            	void Push(DataType data)
            	{
            		// CheckCapacity();
            		_array[_size] = data;
            		_size++;
            	}
            	// 其他方法...
            	~Stack()
            	{
            		if (_array)
            		{
            			free(_array);
            			_array = nullptr;
            			_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;
            }
            
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]