
构造函数又分为
实例构造函数:实例构造函数用于创建和初始化实例。
私有构造函数:私有构造函数是一种特殊的实例构造函数。它通常用在只包含静态成员的类中。如果类具有一个或多个私有构造函数而没有公共构造函数,则不允许其他类(除了嵌套类)创建该类的实例。
静态构造函数:静态构造函数用于初始化类。在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类。
带参数的构造函数作用是为了来初始化某些值而设。
析构函数:析构函数用于销毁类的实例。
1、虚析构函数和析构函数在功能上是一回事,因此除了动态联编(此处意思:需要销毁
父类指针指向的子类对象的空间)外,其他性质和析构函数类似。
2、析构函数与构造函数名字相同,但它前面必须加一个波浪号(~);
3、析构函数没有参数,也没有返回值,而且不能重载。因此在一个类中只能有一个析构函数;当撤消对象时,编译系统会自动地调用析构函数。
在对象释放时,自动调用析构函数。选D。
析构函数(destructor)是成员函数的一种,它的名字与类名相同,但前面要加~,没有参数和返回值。
一个类有且仅有一个析构函数。如果定义类时没写析构函数,则编译器生成默认析构函数。如果定义了析构函数,则编译器不生成默认析构函数。
析构函数在对象消亡时即自动被调用。可以定义析构函数在对象消亡前做善后工作。例如,对象如果在生存期间用 new 运算符动态分配了内存,则在各处写 delete 语句以确保程序的每条执行路径都能释放这片内存是比较麻烦的事情。
有了析构函数,只要在析构函数中调用 delete 语句,就能确保对象运行中用 new 运算符分配的空间在对象消亡时被释放。
扩展资料:
析构函数与构造函数相反,当对象结束其生命周期,如对象所在的函数已调用完毕时,系统会自动执行析构函数。
以C++语言为例:析构函数名也应与类名相同,只是在函数名前面加一个位取反符~,例如~stud( ),以区别于构造函数。它不能带任何参数,也没有返回值(包括void类型)。
只能有一个析构函数,不能重载。如果用户没有编写析构函数,编译系统会自动生成一个缺省的析构函数(即使自定义了析构函数,编译器也总是会为我们合成一个析构函数,并且如果自定义了析构函数,编译器在执行时会先调用自定义的析构函数再调用合成的析构函数),它也不进行任何 *** 作。
只能定义一个析构函数,多了的话编译器不知道调用哪个
1、虚析构函数和析构函数在功能上是一回事,因此除了动态联编(此处意思:需要销毁
父类指针指向的子类对象的空间)外,其他性质和析构函数类似。
2、析构函数与构造函数名字相同,但它前面必须加一个波浪号(~);
3、析构函数没有参数,也没有返回值,而且不能重载,因此在一个类中只能有一个析构函数;当撤消对象时,编译系统会自动地调用析构函数。
构造函数主要用来对成员初始化和分配空间,析构函数用于执行一些清理任务,如释放分配给对象的内存空间等。
构造函数有以下特点:
1构造函数的名字必须与类名相同;
2构造函数可以有任意类型的参数,但不能具有返回类型;
3定义对象时,编译系统会自动地调用构造函数;
4构造函数是特殊的成员函数,函数体可以在类体内,也可写在类体外;
5构造函数被声明为公有函数,但它不能像其他成员函数那样被显式调用,它是在定义对象的同时被调用的。
析构函数有以下特点:
1析构函数的名字必须与类名相同,但它前面必须加一个波浪号 ~ ;
2析构函数没有参数,也没有返回值,而且不能被重载,因此在一个类中只能有一个析构函数;
3当撤销对象时,编译系统会自动地调用析构函数。
因为没说C++哪年的标准,姑且就拿老一点的C++ 03标准来讲吧。
C++ 03 Specification的第1241节有定义析构函数的语法:
A special declarator syntax using an optional function-specifier (712) followed by ~ followed by the destructor’s class
name followed by an empty parameter list is used to declare the destructor in a class definition
翻译过来大致就是说
析构函数的长相是 function-specifier ~类名()
其中function-specifier可以是下列三者:
inline
virtual
explicit
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)