广州网站排名优化价格,光纤做网站 移动不能访问电信,企业内部网站,济南网站建设vashine一、构造函数
1、概念
构造函数是特殊的成员函数#xff0c;需要注意的是#xff0c;构造函数虽然名叫做构造#xff0c;但是构造函数的主要任务并不是开空间创建对象#xff0c;而是初始化对象。
2、特征
函数名与类名相同。无返回值对象实例化时编译器自动调用对应的…一、构造函数
1、概念
构造函数是特殊的成员函数需要注意的是构造函数虽然名叫做构造但是构造函数的主要任务并不是开空间创建对象而是初始化对象。
2、特征
函数名与类名相同。无返回值对象实例化时编译器自动调用对应的构造函数构造函数可以重载如果类中没有显示定义构造函数则C编译器会自动生成一个无参的默认构造函数一旦用户显示定义编译器将不再生成。
下面代码构造函数与缺省参数结合非常实用
#includeiostream
using namespace std;
class date
{
private:int _year;int _month;int _day;
public://函数名与类名相同。无返回值date(int year 2023, int month 1, int day 1){_year year;_month month;_day day;}void Print(){cout _year - _month - _day;}
};int main()
{date a;date _a(1, 2, 3);a.Print();return 0;
} 但此时如果把自己定义的构造函数删除默认生成构造函数但是不会自己初始化。 3、默认生成的构造函数到底有什么用
处理自定义回去调用这个成员的默认构造函数但对于内置类型不确定看编译器建议不处理。 比如上面是自定义类型就会自己调用Stack的默认构造函数
默认构造函数的概念
我们不写显示构造函数编译器默认生成的构造函数叫默认构造无参构造函数也可以叫默认构造全缺省也可以叫默认构造
小总结
内置类型成员不做处理自定义类型会去调用它的默认构造。
所以对于内置类型还是需要程序员自己去创建构造函数而对于自定义类型会自动调用这个成员的默认构造函数其实还是自己创建的构造函数
内置类型int/double/……注意指针都是内置类型自定义类型class/struct
其实上面的构造函数并不好对于自定义类型和构造类型区别对待在C11中会支持对内置类型的初始化在private声明的时候进行初始化。支持声明时给缺省值 总结
一般情况下我们都要自己写构造函数内置类型都不处理成员都是自定义类型或者声明时给了缺省值可以考虑让编译器自己生成构造函数
可以不传参数就调用构造都可以叫默认构造这三个函数不能同时存在只能存在一个
析构函数
1、概念
与构造函数功能相反析构函数不是完成对对象本身的销毁局部对象销毁工作是由编译器完成的。而对象在销毁时会自动调用析构函数完成对象中资源的清理工作。
2、特性
析构函数名是在类名前加上字符~无参数无返回值类型一个类只能有一个析构函数。若未显示定义系统会自动生成默认的析构函数。注意析构函数不能重载对象生命周期结束时C编译系统自动调用析构函数。
3、功能
对象销毁不需要析构函数对象的销毁靠系统更本质一点是函数栈帧的销毁而析构函数的作用是处理动态开辟的空间比如栈开辟的动态的空间。
我们如果不写析构函数那系统自动默认生成的析构函数不会把开辟的指针处理
默认生成析构函数行为跟构造类似内置类型成员不做处理自定义类型成员会去调用他的析构