社区
C++ 语言
帖子详情
内联函数,构造函数可不可以作为虚函数
greex
2004-12-09 09:51:47
1,内联函数可不可以作为虚函数?为什么
2,构造函数可不可以作为虚函数?为什么
...全文
482
19
打赏
收藏
内联函数,构造函数可不可以作为虚函数
1,内联函数可不可以作为虚函数?为什么 2,构造函数可不可以作为虚函数?为什么
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zhoujiamurong
2005-02-28
打赏
举报
回复
mark
goodluckyxl
2004-12-10
打赏
举报
回复
即使可以定义 virtual constructor
virtual机制在构造函数中是不可能起作用的
构造函数要保证对象建立在已经构造的资源对象上
updd
2004-12-10
打赏
举报
回复
呵呵,好象是武断了点,C++ Primer里好象也有说。没仔细看虚函数内联
hncdsun
2004-12-10
打赏
举报
回复
构造函数是可以定义为虚函数的????
to webjj(Null)
不要误导别人啊!
构造函数不可以!析构函数可以!
webjj
2004-12-10
打赏
举报
回复
构造函数是可以定义为虚函数的
hncdsun
2004-12-10
打赏
举报
回复
所以一般来说虚函数没有进行inline处理
hncdsun
2004-12-10
打赏
举报
回复
to : updd(UP弟弟)
内联是在编译阶段用代码换调用,而虚函数是在运行期动态束定
------------------------------
呵呵,不能太武断啊!
不过一般的编译器都不处理inline
另外:虚函数可以内联的话,实现起来开销很大,
从more effective c++中有说!
248406869
2004-12-10
打赏
举报
回复
虚函数编译器是不会给内联的。
whoho
2004-12-10
打赏
举报
回复
内联函数不能为虚函数,原因在于虚表机制需要一个真正的函数地址,而内联函数展开以后,就不是一个函数,而是一段简单的代码(多数C++对象模型使用虚表实现多态,对此标准提供支持)
构造函数不能为虚函数,因为通常情况下继承体系中在对象初始化之前,不存在虚表以完成多态行为(也就是说,虚表在构造函数调用完以后才能确保存在,没有虚表,就不可能多态)
以上假设用虚表实现多态,如果使用其他机制,也许可以类似推出
ywfscu
2004-12-10
打赏
举报
回复
每个类都有自己的构造函数,其功能跟虚函数一样了,就不用在虚了撒
mengxiangfengwz
2004-12-10
打赏
举报
回复
构造函数不能是虚函数,这是一定的了
内联函数吗,
yuanye2008
2004-12-10
打赏
举报
回复
构造函数不能是虚函数
内联函数可以作为虚函数,但是代价太大!
oyljerry
2004-12-10
打赏
举报
回复
构造函数的虚函数没什么意义
老夏Max
2004-12-10
打赏
举报
回复
构造函数不可以!析构函数可以!
虚构造函数没意义!
diandian82
2004-12-10
打赏
举报
回复
构造函数不可以!析构函数可以!
虚构造函数没意义!
updd
2004-12-09
打赏
举报
回复
虚函数不能内联。
内联是在编译阶段用代码换调用,而虚函数是在运行期动态束定。
xxiaoran
2004-12-09
打赏
举报
回复
同意 EisenHammer(奥古斯都)的说法,内联函数应该可以,而构造函数肯定不行。
EisenHammer
2004-12-09
打赏
举报
回复
内联函数一般是可以的。内联只是编译器处理代码的时候行为不同。对RTTI(运行时识别)机制没有影响。
EisenHammer
2004-12-09
打赏
举报
回复
构造函数肯定不能作为虚函数。虚函数是为了在继承的类里面用同样的函数名来实现RTTI的。构造函数不需要也不可能让你RTTI!
静态成员函数、
内联函数
、
构造函数
、析构函数、operator=是否可以定义为
虚函数
?
1.静态成员函数:静态成员函数属于类,也属于对象,但最终属于类,在内存中只有一份,即没有this指针;而
虚函数
必须根据指向哪一个对象来确定调用谁的
虚函数
,即
虚函数
要在有对象的基础上才可以。所以静态成员函数不可以定义为
虚函数
。 2.
内联函数
:由于
内联函数
是直接展开代码,并不存在函数调用,即没有函数地址,那么就不能存在虚表中,所以
内联函数
不可定义为
虚函数
; 3.
构造函数
:虚表指针是存储在对象的内存空间...
6.15C++:
虚函数
、
构造函数
不可以为
虚函数
、虚析构函数、
虚函数
实现多态、
虚函数
中默认参数、基类
虚函数
不能是私有函数、
虚函数
对象调用可内联,指针/引用调用不能内联
1
虚函数
虚函数
可以实现运行时的多态,在运行时觉得调用哪个函数体;
虚函数
必须是非静态的成员函数,
虚函数
是属于对象的,不是属于整个类的,需要在运行时通过指针定位到指向的对象,然后决定调用哪个函数体;
虚函数
经过派生之后,就可以实现运行过程中的多态;
构造函数
不能是
虚函数
,析构函数可以;
虚函数
virtual只能出现在类定义的函数原型声明中,而不能在成员函数实现的时候;
虚函数
不能是
内联函数
,因为对
虚函数
的调用需要动态绑定,而对
内联函数
的处理是静态的 #include <iostream>
虚函数
可不可以
是
内联函数
虚函数
可不可以
是
内联函数
内联函数
不能为
虚函数
,原因在于虚表机制需要一个真正的函数地址,而
内联函数
展开以后,就不是一个函数,而是一段简单的代码(多数C++对象模型使用虚表实现多态,对此标准提供支持),可能有些
内联函数
会无法内联展开,而编译成为函数。 class Foo { public: virtual void vFunc() const; private: }; c
哪些函数不可以成为
虚函数
?
构造函数
和析构函数可以是
虚函数
吗?
哪些函数不能成为
虚函数
? 普通函数:普通函数不属于成员函数,是不能被继承的。普通函数只能被重载,不能被重写,因此声明为
虚函数
没有意义。因为编译器会在编译时绑定函数。
构造函数
:只有当调用了
构造函数
,这个对象才能产生,如果把
构造函数
写成
虚函数
,这时候我们的对象就没有办法生成。更别说用对象去调用了。所以
构造函数
不能成为
虚函数
。 静态成员函数:静态成员函数是属于类的,不依赖于对象调用,所以也不能成为
虚函数
。 友元函数:友元函数不属于类的成员函数,不能被继承。对于没有继承特性的函数没有
虚函数
的说法。 内联
C++中的
内联函数
: (1)
内联函数
的使用是直接将程序在调用出展开,可以避免函数调用的开销; (2)大多数编译器都不支持
内联函数
的递归; (3)
内联函数
可以在程序中定义多次,所以应该将
内联函数
定义在头文件中,这样确保在调用时所使用的定义是相同的; (4)
虚函数
也可以形式上定义为
内联函数
,但是编译器会选择是否将其真的 当作
内联函数
,一般
虚函数
是不能当作
内联函数
的,因为
虚函数
要实现动态 绑定,在运行时才调
C++ 语言
64,687
社区成员
250,496
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章