我们在了解了类的简单创建后,需要对类的创建与销毁有进一步的了解,也就是对于类的构造函数与析构函数的了解。
目录
注意:
构造函数的特性:
析构函数:
注意:
该部分内容为重难点内容,在正常的学习与学校的考试中,该内容为必要内容,读者不能因为其较难而放弃。
类在创建与销毁时,会伴随着构造函数和析构函数的调用。
当我们没有对这两个函数进行定义时,系统会主动给我们生成一个无参的构造函数和一个无参的析构函数。
构造函数的特性:
1.构造函数的函数名与类的名称相同
class Date
{
public:Date(){}~Date(){}
};
2.构造函数分为初始化构造函数和拷贝构造函数
注意:这一期我们针对初始化构造函数进行讲解,拷贝构造函数将放于单独一期
3.构造函数在类创建时对类内数据进行一定的初始话操作
class Date
{public:Date(int year=2024,int month=7,int day=10){_year=year;_month=month;_day=day;}private:int _year,_month,_day;} ;
4.构造函数可以进行函数重载
class Date
{public:Date(){_year=2024;_month=7;_day=10;}Date(int year){_year=year;}Date(int year,int month){_year=year;_month=month;}Date(int year,int month,int day){_year=year;_month=month;_day=day;}private:int _year,_month,_day;} ;
注意:我们进行函数重载时,需要注意对于析构函数我么要注意函数的各种类型都要对应,不然系统就无法匹配相应的构造函数类型。
所以我建议读者在创建构造函数时,可以创建全缺省的函数:
class Date
{public:Date(int year=2024,int month=7,int day=10){_year=year;_month=month;_day=day;}private:int _year,_month,_day;} ;
析构函数:
1.析构函数是在类名前面加一个~
class Date
{public:Date(int year=2024,int month=7,int day=10){p=new int(10);}~Date(){delete[]p;}private:int _year,_month,_day;int*p;
} ;
2.析构函数的作用,对数据进行释放处理,对栈区消耗内存进行及时的释放
如果不进行手动释放内存会有所堆积,从而导致栈溢出。
3.对需要内存释放的类,必须进行释放处理,也就是我们此时必须要自己写析构函数
4.析构函数不能进行函数重载
对于两者的区别我们不再进行讨论,读者自己进行对比吧。