C++中不能声明为虚函数的有哪些函数

 我来答
遇到TA00003
2013-11-05 · TA获得超过169个赞
知道答主
回答量:121
采纳率:0%
帮助的人:155万
展开全部
,不能被override
多态的运行期行为体现在虚函数上,虚函数通过继承方式来体现出多态作用,顶层
这个原因很简单,主要是从语义上考虑,所以不支持。因为构造函数本来就是为了明确初始化对象成员才产生的,然而
virtual function
主要是为了再不完全了解细节的情况下也能正确处理对象。另外,
1)构造函数不能被继承,因而不能声明为virtual函数
(2)构造函数一般是用来初始化对象,只有在一个对象生成之后,才能发挥多态
作用,如果将构造函数声明为virtual函数,则表现为在对象还没有生成的情
其实很简单,那内联函数就是为了在代码中直接展开,减少函数调用花费的代价,虚函数是为了在继承后对象能够准确的执行自己的动作,这是不可能统一的。(再说了,
inline函数在编译时被展开,虚函数在运行时才能动态的邦定函数)
不支持友元函数为虚函数?因为C++
不支持友元函数的继承,对于没有继承特性的函数没有虚函数的说法。友元函数不属于类的成员函数,不能被继承。
* Author: china*/#include <iostream
using namespace std;class B {public:B() {cout << 基类构造 << endl;}/*在类的继承中,如果有基类指针指向派生类,那么用基类指针delete时,如果不定义成虚函数,派生类中派生的那部分无法析构。
* 你可以吧virtual去掉试一下
* 因此在类的继承体系中,基类的析构函数不声明为虚函数容易造成内存泄漏。所以如果你设计一定类可能是基类的话,必须要声明其为虚函数。
* */virtual ~B() {
cout << 基类析构 << endl;}virtual void func() {
cout << 基类的func() << endl;}private:};class D :public B{public:D() {cout << 派生类构造 << endl;}~D() {cout << 派生类析构 << endl;}void func() {
cout << 派生类的func() << endl;}private:};int main(int argc, char **argv) {
D d; //调用构造先有对象
lovingyouyuan
2013-11-15 · 超过20用户采纳过TA的回答
知道答主
回答量:63
采纳率:0%
帮助的人:34万
展开全部
普通函数(非成员函数);静态成员函数;内联成员函数;构造函数;友元函数

http://blog.csdn.net/ta893115871/article/details/8194836
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式