文档章节

不能是虚函数的成员函数

王勋广
 王勋广
发布于 2016/05/03 00:06
字数 423
阅读 10
收藏 0

不能是虚函数的成员函数有:静态成员函数,内联成员函数,构造函数


静态绑定(静态联编):联编工作出现在编译阶段,用对象名或者类名来限定要调用的函数。

动态绑定:联编工作在程序运行时执行,在程序运行时才确定将要调用的函数。


为什么静态成员函数不能是虚函数?

虚函数是动态绑定的基础。虚函数必须是非静态的成员函数。

虚函数是与类对象捆绑的。而类的普通成员函数(包括虚函数)在编译时加入this指针,通过这种方式可以与对象捆绑,而静态函数编译时不加this,因为静态函数是给所有类对象公用的,所以没有在编译时加this,所以无法与对象捆绑,而虚函数就是靠着与对象捆绑加上虚函数列表才实现了动态捆绑。所以没有this指针虚函数无从谈起。


虚函数一般不声明为内联函数,因为对虚函数的调用需要动态绑定,而对内联函数的处理是静态的,所以虚函数一般不能以内联函数处理。但将虚函数声明为内联函数也不会引起错误。


至于构造函数为什么不能是虚函数,一个解释是:大光头(Bjarne Stroustrup)规定的。当然,这样设计有很多理由。详情请见http://blog.sina.com.cn/s/blog_620882f401016ri2.html



© 著作权归作者所有

王勋广
粉丝 2
博文 10
码字总数 4668
作品 0
衡阳
程序员
私信 提问
CUDA学习(七十一)

函数参数: 函数参数通过常量内存传递给设备,限制为4 KB。 函数不能有可变数量的参数。 函数中的静态变量: 在或函数的主体中,只有变量或没有任何设备内存空间说明符的变量可以用静态存储类...

night李
2018/02/23
0
0
C++基础——函数

函数的定义   返回类型是必须的,当没有返回类型的时候就用void代替,如果参数个数超过1,则用逗号分隔参数列表,参数列表可以为空。 默认参数 C++中可以在函数声明时为参数提供一个默认值...

baxiang
2017/12/22
0
0
C++ primer第二次阅读学习笔记(第15章:面向对象编程)

第十五章:面向对象编程 继承和动态绑定与抽象一起成为面向对象编程的基础。 C++中用类进行数据抽象,用派生从一个类继承另一个类,动态绑定是编译器能够在运行时决定,是使用基类中定义的函...

长平狐
2012/10/08
107
0
嵌入式开发之C++基础学习笔记4--面向对象封装继承多态

1.封装和继承 1)单继承 class 派生类名:访问方式 基类名   {    派生类中的新成员   }; 例子: #include <iostream> using namespace std; class A{ public : int a; A(){ a = 5; ...

吴锦涛
2012/12/18
256
0
C++学习笔记(13)——利用对象、引用、指针调用虚函数

本博客( http://blog.csdn.net/livelylittlefish )贴出作者(三二一、小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正! 利用对象、引用、指针调用虚函数 虚函数实现原理说明: 在“...

晨曦之光
2012/03/09
898
0

没有更多内容

加载失败,请刷新页面

加载更多

为什么要在网站中应用CDN加速?

1. 网页加载速度更快 在网站中使用CDN技术最直接的一个好处就是它可以加快网页的加载速度。首先,CDN加速的内容分发是基于服务器缓存的,由于CDN中缓存了不少数据,它能够给用户提供更快的页...

云漫网络Ruan
24分钟前
2
0
亚玛芬体育(Amer Sports)和信必优正式启动合作开发Movesense创新

亚玛芬体育和信必优正式启动合作开发Movesense创新,作为亚玛芬体育的完美技术搭档,信必优利用Movesense传感器技术为第三方开发移动应用和服务。 Movesense基于传感器技术和开放的API,测量...

symbiochina88
35分钟前
2
0
创龙TI AM437x ARM Cortex-A9 + Xilinx Spartan-6 FPGA核心板规格书

SOM-TL437xF是一款广州创龙基于TI AM437x ARM Cortex-A9 + Xilinx Spartan-6 FPGA芯片设计的核心板,采用沉金无铅工艺的10层板设计,适用于高速数据采集和处理系统、汽车导航、工业自动化等领...

Tronlong创龙
36分钟前
2
0
好程序员Java学习路线分享MyBatis之线程优化

  好程序员Java学习路线分享MyBatis之线程优化,我们的项目存在大量用户同时访问的情况,那么就会出现大量线程并发访问数据库,这样会带来线程同步问题,本章我们将讨论MyBatis的线程同步问...

好程序员官方
42分钟前
6
0
IDEA 自定义方法注解模板

IDEA 自定义方法注解模板 1、使用效果 /*** 计算交易费用* @Author wangjiafang* @Date 2019/9/11* @param feeComputeVo* @return*/@PostMapping("/v1/fee_compute")public ApiResp......

小白的成长
42分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部