虚函数的优缺点 private函数可以被调用吗?

[更新]
·
·
分类:行业
3580 阅读

虚函数的优缺点

private函数可以被调用吗?

private函数可以被调用吗?

一般情况下私有成员函数一定不能被外部调用,但是虚拟私有成员函数是可能被外部调用的,我们知道 C 多态的包括编译时多态和运行时多态,而通过基类的指针或者引用调用虚函数时,会发生动态的绑定,而编译器的处理是静态的,它只会在调用该成员函数的时候,在当前类的作用域中进行访问控制检查( Base 类或者 B 类中 f 函数是 public 的

虚函数或纯虚函数主要用来解决什么问题?

虚函数是用于后期动态绑定的,可以实现运行期多态。说白了就是一个函数指针,在运行的时候才确定最终要调用的目标。
纯虚函数顾名思义就是完全虚的函数,它没有绑定到任何一个实际函数上,是空的。
纯虚函数主要是用来阻止类的实例化,强制要求类的派生者必须实现该函数否则也不能实例化,相当于C#或java的abstract函数。
如果一个类中所有的函数都是纯虚函数,则该类就构成了一个接口。

哪些函数能被声明为虚函数?为什么?

非静态成员函数可以被声明为虚函数。
因为它是对象的组成部分

C 中基类的析构函数为什么要用virtual虚析构函数?

如果析构不用virtual,那你子类就析构不了了,因为直接会调用父类的析构。
建议你去补补多态方面的知识。多态是怎么实现的。

纯虚函数与虚函数区别?

虚函数是在基类中作总体框架定义,定义时在函数的返回类型名前加上virtual构成。它的具体不同实现版本是在其类的派生类里实现的。
纯虚函数是在其类中连基本框架都定义不出来,所以只是用“virtual 类型名 函数名()0”的形式来声明基类中有这么一个函数,而它的实现则完全由基类的派生类根据不同需要来完成。
有纯虚函数的基类叫抽象类,不能被实例化(即不能生成对象),只能被继承。我的理解是:虚函数实现的具体版本中总是有通用的部分,这些通用部分可以在基类中定义,而纯虚函数则完全没有能共用的部分,完全是由派生类中不同的实现完成的

C 通过基类指针delete派生类数组,析构函数是虚函数,程序为什么会崩溃?

感谢邀请回答,最好还是能把代码show出来看一下,在某些程式里,A4个字节,B8个字节,你new了一个80个字节的B数组然后当A有1 0个this指针式不对的,要么他会执行10次然而有5个this指针是不对的。自然要挂。

谢谢邀请。
这个问题真不知从何答起,因为专业所限,我对这个问题没有任何了解和概念,更不愿意通过网上搜索相关答案再回答后分享给他人,因为这样一来我就只是个搬运工了,而不是一个原创者,所以知之为知之,不知为不知。