下面代码会有什么输出?
fun输出fun,
vfunc爆异常错误
---------------------------------------------
为什么有这样的结果?
比如 上述的func() 可能会有这个形式:
void func(A* this)
{}
2. 在编译的时候,func这个函数直接会被汇编到text段里面,加载到内存后,其地址及入场等等信息都是完整存在的.
我们在main你们调用这个函数的这句代码会直接引用到text段里面函数对于的地址,这个值可以说是死的。所以对象即便为空也是没关系的.
3.虚函数的地址虽然也和一般函数一样在内存中加载了,但是虚函数不是在编译时刻求值的,而是动态时刻。这个动态时刻的概念就是,作为入参或者类的继承类型的实例化地址对应的具体函数的地址.通过visual studio或gcc反汇编代码,会发现往往都是在类对象实例化的时候,在构造函数里面插入的。这个地方 a这个指针显然没有new从而没有调用构造函数,所以看其vptr指针(vs貌似叫做vftable)可以肯定地址是空的.所以会爆错!
4.如果a作为栈变量或者堆类型new出肯定都是不会爆错!
基础语法---J2SE
servlet里面的线程可以这么用
Oracle AWR 报告中 No data exists for this section of the rep
围棋博弈程序的实现与思考(7)——运行结果
SQLserver数据库中的文件和文件组
Struts2学习笔记(8)-----Struts2的OGNL表达式语言用法
连载:编写高效代码(14) 程序、数据访问符合Cache的时间、空间局
html5游戏开发-零基础开发RPG游戏-开源讲座(二)-跑起来吧英雄
Oracle JOB异常ORA-06512
Linux下C语言键盘输入密码时无回显(屏幕不显示字符)
C# AndrewUtil.dll 在小博中发布&分享(翻译组件)
SWT browser与JDIC browser区别
Adiroid组件4
PostgreSQL之精妙的数据库导入导出工具架构 (十)
SAP MM ME21N保存前检查增强
C#中使用资源文件保存图片和皮肤文件的使用
java+ajax实现web目录树
DevExpress xtraGrid控件的使用
Android组件2
归并排序
vi/vim学习的必备键盘图
Android组件3
Oracle DBCA 命令 进行实例 复制 说明
浪潮优派培训java笔记:第9章 类集Collections(容器)