77问答网
所有问题
当前搜索:
析构函数能是虚函数吗
析构函数
为什么
是虚函数
?
答:
析构函数可以为虚函数,也可以不为虚函数
。(更多的时候不为虚函数)。设计析构函数为虚函数,主要是考虑到继承。析构函数(destructor) 与构造函数相反,当对象结束其生命周期,如对象所在的函数已调用完毕时,系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了...
C++ 为什么将
析构函数
定义
为
纯
虚函数
编译器报错一个无法解析的外部指令...
答:
对象析构时,是从派生类的
析构函数
一层一层调用到基类的析构函数,如果基类的析构函数是纯
虚函数
,就会导致这个错误。例如你这个继承的序列,Waiter析构时,就会调用Worker的析构函数,这个函数不
可以是
纯虚函数。道理也不难理解,每个类都要为自己对象的析构自己负责,也就是说必须正确析构自己类的对...
构造、
析构函数
可否为virtual
答:
构造函数不能声明为虚函数
,析构函数可以声明为虚函数,而且有时是必须声明为虚函数。不建议在构造函数和析构函数里面调用虚函数。构造函数不能声明为虚函数的原因是:解释一:所谓虚函数就是多态情况下只执行一个。而从继承的概念来讲,总是要先构造父类对象,然后才能是子类对象。如果构造函数设为虚函...
C++构造,
析构函数可以是虚函数吗
,是否可以被继承?
答:
构造函数不能为虚函数,析构函数则可以
,在C++中函数没有继承一说,继承指的是类继承,派生类的构造函数执行时需先构造基类的构造函数,而析构函数的执行顺序则刚好相反。
下面函数中,
可以
作为
虚函数
的是( )
答:
28.选D,
只有类的成员函数及类的析构函数可以作为虚函数
。29.选D,A。可以给虚函数写实现代码,B。在基类和子类都可以。C,说反了。30.选D,友元函数通过类的指针访问类成员函数,不是this,他都不是要访问那个类的成员函数,怎么用this去访问他。
什么情况下,类的
析构函数
应该声明
为虚函数
?为什么?
答:
虚析构函数是为了解决这样的一个问题:基类的指针指向派生类对象,并用基类的指针删除派生类对象。如果某个类不包含
虚函数
,那一般是表示它将不作为一个基类来使用。当一个类不准备作为基类使用时,使
析构函数为虚
一般是个坏主意。因为它会为类增加一个虚函数表,使得对象的体积翻倍,还有可能降低其可...
c++ 中 为什么要将
析构函数
设置成
虚函数
?
答:
写成虚的是为了在实现多态的时候不造成内存泄露, 比如:class a { int aa;public:virtual ~a(){};};class b : public a { int bb;};如果你这样:a *pa = new b; // upcast 然后这样:delete pa;这句delete, 如果你基类的
析构函数
不
是虚
的的话, 就会造成内存泄露, 具体表现为派生类的...
析构函数
为什么总
是虚函数
答:
一个函数一旦声明
为虚函数
,那么不管你是否加上virtual 修饰符,它在所有派生类中都成为虚函数。但是由于理解明确起见,建议的方式还是加上virtual 修饰符。C++不把虚
析构函数
直接作为默认值的原因
是虚函数
表的开销以及和C语言的类型的兼容性。有虚函数的对象总是在开始的位置包含一个隐含的虚函数表指针...
C++中为什么将
析构函数
生命
为虚函数
?尤其是在继承机制中
答:
因为子类的成员需要先于父类被摧毁.
虚函数能够
确保在子类
析构函数
调用前父类析构函数不会被意外调用.
c++什么是虚函数,构造与
析构函数可以是虚函数吗
?
答:
析构函数
之所以搞成虚函数,因为你可能采用基类指针动态申请派生类对象,用完用delete吧,这时 将才产生一个问题,基类指针指向何种对象?如果
是虚函数
,根据多态,直接delete,会根据对象,调用析构,即可完美解决,否则需要根据类型转换,很是麻烦啊...所以,总结一下:1,构造函数一定不要是虚函数,2,...
1
2
3
4
5
6
7
8
9
10
涓嬩竴椤
灏鹃〉
其他人还搜
析构函数可以声明为虚函数
析构函数可以是纯虚函数吗
构造函数能定义为虚函数吗
构造函数是虚函数吗
虚函数是友元函数吗
析构函数一般写成虚函数的原因
类的构造函数可以是虚函数
构造函数是私有的还是公有的
虚函数必须是类的成员函数