博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++,不能声明为虚函数的函数
阅读量:6936 次
发布时间:2019-06-27

本文共 1142 字,大约阅读时间需要 3 分钟。

1.顶层函数:多态的运行期行为体现在虚函数上,虚函数通过继承方式来体现出多态作用,顶层

函数不属于成员函数,是不能被继承的。

2.构造函数

1)构造函数不能被继承,因而不能声明为virtual函数

2构造函数一般是用来初始化对象,而只有在一个对象生成之后,才能发挥多态作用,如果将构造函数声明为virtual函数,则表现为在对象还没有生成的情况下就使用了多态机制,因而是行不通的,如下例: 

 

#include "stdafx.h"#include "Stu.h"#include
using namespace std;class B{ public: /* virtual B() --->编译错误 error C2633: “B”:“inline”是构造函数的唯一合法存储类 虚构造函数不是指在构造函数前加virtual,这样编译器不会通过的。 因为构造函数的的绑定总是静态绑定的。不可能为虚函数,不仅构造函数不能是虚拟的,且构造函数中调用其它虚的成员函数也不能实现多态,简而言之就是构造函数中不能调用虚函数,而所谓的虚拟构造函数就是为了解决这个问题的一个解决方案,她采用了一种所谓信封/信纸的方法实现。具体的可以参考C++编程思想这本书中的附录,里面有详细地解释。 另外,在设计模式中的factory method也被叫做virtual constructor,既虚构造器,当然它解决的问题和我前面所说的不一样。 有兴趣的朋友可以参考这两本书。相信可以对这个问题有一个比较全面地了解。 http://bbs.csdn.net/topics/40266387 */ B() { cout<<"BBBB"<
show(); //再体现多态 pb = new D(); //2. new pb->show(); //再多态 delete pb;}/*BBBBDDDD===BBBBDDDD===请按任意键继续. . .*/

  

 

3.static函数:不能被继承,只属于该类。

4.友元函数:友元函数不属于类的成员函数,不能被继承。

5.inline函数inline函数和virtual函数有着本质的区别,inline函数是在程序被编译时就

展开,在函数调用处用整个函数体去替换,而virtual函数是在运行期才能够

确定如何去调用的,因而inline函数体现的是一种编译期机制,virtual函数

体现的是一种运行期机制。此外,一切virtual函数都不可能是inline函数。

   

源文档 <http://blog.sina.com.cn/s/blog_49652a2d0100ga6d.html>

   

转载地址:http://rmfnl.baihongyu.com/

你可能感兴趣的文章
在Linux Bash通过上下键快速查找历史命令
查看>>
shell编程基础
查看>>
通过 powershell 配置 IIS
查看>>
解决SQLSERVER数据库表被琐死!
查看>>
SqlServer 获得存储过程的返回值(参数返回),别玩了output
查看>>
多个集合合并成没有交集的集合
查看>>
GNU Readline库函数的应用示例
查看>>
C#实现FTP文件夹下载功能【转载】
查看>>
strut1.X和spring整合的二种方法
查看>>
二分查找算法
查看>>
医院院长修电脑
查看>>
(转)Unity3D命令行Build
查看>>
Ubuntu14.04安装PostpreSQL9.3.5记录
查看>>
Onvif协议及其在Android下的实现
查看>>
关于MAC的pkg和mpkg的分别
查看>>
Android---让你的APK程序开机自动运行(转)
查看>>
.net web 开发平台- 表单设计器 一(web版)
查看>>
POJ 2948 DP
查看>>
[转] Android自动化测试之MonkeyRunner录制和回放脚本(四)
查看>>
HTML性能优化
查看>>