• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++细节理解

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

答:因为类外static变量或函数表示限定在此源文件中才能使用,而类中的static变量或函数表示由本类及其所有对象共享,如果在类外初始化或定义类的成员变量或函数加上static关键字,会引起两个含义上的语义歧义.

2.为什么析构函数要被定义为虚函数

答:定义虚析构函数后,由于多态,当使用delete释放基类指针指向派生类对象时,会调用派生类的虚构函数,然后派生类的析构函数自动调用基类析构函数不是虚函数的话,直接调用基类的析构函数了。如果派生类中有用new分配的内存,就无法释放了

3.为什么构造函数不能为虚函数

(1) 构造一个对象的时候,必须知道对象的实际类型,而虚函数行为是在运行期间确定实际类型的。而在构造一个对象时,由于对象还未构造成功,编译器无法知道对象的实际类型,是该类本身,还是该类的一个派生类,或是更深层次的派生类。

(2)虚函数的执行依赖于虚函数表。而虚函数表构造函数中进行初始化工作,即初始化vptr,让他指向正确的虚函数表。而在构造对象期间虚函数表还没有被初始化,将无法进行

4.如何辨别函数型调用是函数,类的构造函数还是函数对象

答:通过查看定义,用函数名调用的是函数,用类名调用的是类的构造函数,用类的对象名调用的是函数对象


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
[C++程序设计]用数组名作函数参数发布时间:2022-07-13
下一篇:
C#限速下载网络文件发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap