C++函数中那些不可以被声明为虚函数的函数

来源:互联网 发布:js dialog onok 编辑:程序博客网 时间:2024/05/22 06:53
常见的不能声明为虚函数的有:普通函数(非成员函数);静态成员函数;内联成员函数;构造函数;友元函数。

1、为什么C++不支持普通函数为虚函数?

      普通函数(非成员函数)只能被overload,不能被override,声明为虚函数也没有什么意思,因此编译器会在编译时绑定函数。

2、为什么C++不支持构造函数为虚函数?

      这个原因很简单,主要是从语义上考虑,所以不支持。因为构造函数本来就是为了明确初始化对象成员才产生的,然而virtual function主要是为了在不完全了解细节的情况下也能正确处理对象。另外,virtual函数是在不同类型的对象产生不同的动作,现在对象还没有产生,如何使用virtual函数来完成你想完成的动作。(这不就是典型的悖论)

3、为什么C++不支持内联成员函数为虚函数?

      其实很简单,那内联函数就是为了在代码中直接展开,减少函数调用花费的代价,虚函数是为了在继承后对象能够准确的执行自己的动作,这是不可能统一的。(再说了,inline函数在编译时被展开,虚函数在运行时才能动态的邦定函数)

4、为什么C++不支持静态成员函数为虚函数?

      这也很简单,静态成员函数对于每个类来说只有一份代码,所有的对象都共享这一份代码,他也没有要动态邦定的必要性。

5、为什么C++不支持友元函数为虚函数?

      因为C++不支持友元函数的继承,对于没有继承特性的函数没有虚函数的说法。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 家有老人带孩子怎么办 不会看孩子。孩子一哭就害怕怎么办 孩子不老实爱动怎么办 4周孩子脾气大怎么办 老公脾气暴躁爱骂人怎么办? 当妈妈了脾气不好怎么办 父亲很坏不顾家很会赌钱怎么办 妈妈骂我很难听怎么办 父母管的太严怎么办 2岁宝宝哭闹不止怎么办 8岁儿童叛逆期怎么办 两岁宝宝叛逆期怎么办 4个月小孩哭怎么办 2个月孩子爱哭怎么办 小孩挑衅大人被大人打怎么办 在学校犯了错怎么办 孩子在学校爱捣乱怎么办 小孩老是在学校捣乱怎么办 孩子不听话每天会发火怎么办 孩子不听话控制不住发火怎么办 儿子不听话我总会发火怎么办 小孩好动精力不集中怎么办 孩子好动精力不集中怎么办 一岁半宝宝咳嗽半个月了怎么办 6岁儿童上课调皮怎么办 小孩挨揍后精神失控怎么办 孩子不听话把我胃气疼了怎么办 因为孩子不听话夫妻经常吵架怎么办 11岁儿子不听话了怎么办 二十岁的儿子还不听话怎么办 幼儿园小班幼儿不听老师的话怎么办 幼师对待不听话的孩子该怎么办 2岁宝宝不吃饭只喝奶怎么办 孩子哭着喊妈妈不睡觉怎么办 孩子晚上不睡觉一直哭怎么办 孩子不睡觉还哭怎么办 孩子晚上不睡觉老哭怎么办? 4岁宝宝叛逆期怎么办 驾考紧张脚抖怎么办 驾考科目三紧张怎么办 孩子不自信容易紧张怎么办