虚函数理解
来源:互联网 发布:114啦网址导航源码 编辑:程序博客网 时间:2024/06/13 08:37
只要是学过C++的人都知道在类Base中加了Virtual关键字的函数就是虚拟函数(例如函数print),于是在Base的派生类Derived中就可以通过重写虚拟函数来实现对基类虚拟函数的覆盖。当基类Base的指针point指向派生类Derived的对象时,对point的print函数的调用实际上是调用了Derived的print函数而不是Base的print函数。这是面向对象中的多态性的体现。(关于虚拟机制是如何实现的,参见Inside the C++ Object Model ,Addison Wesley 1996)
基类是base,
派生类是derived,在derived中定了一个虚函数 vitual print
则当一个指针指向derived的对象时候,调用print,调用的是derived的而不是print的。 本来就是这样子把
class Base //基类base,构造函数base
{
public:Base(){}
public:
virtual void print(){cout<<"Base";} //虚函数print,打印base
};
class Derived:public Base //base的派生类为derived。这里是继承,public是访问控制限定符
{
public:Derived(){}
public:
void print(){cout<<"Derived";} //成员函数 print
};
int main()
{
Base *point=new Derived(); //实例化一个derived的对象,由一个base类的指针指向它
point->print(); //调用该类的函数print
}
Output:
Derived
这也许会使人联想到函数的重载,但稍加对比就会发现两者是完全不同的:
- 虚函数的理解
- 虚函数的理解
- C++ 虚函数理解
- C++ 虚函数理解
- 虚函数理解
- 虚函数机制理解
- 理解虚函数
- c++虚函数理解
- 理解虚函数
- 虚函数的理解
- 虚函数的理解
- 虚函数简单理解
- 理解C++虚函数
- 虚函数学习理解..
- 理解虚函数表
- C++:虚函数理解
- 深入理解虚函数
- 虚函数,纯虚函数理解
- EXTJS --领料单行
- 333
- 用BeanUtils框架操作类的属性
- Qt可用正则表达式小于255
- spring aop 配置
- 虚函数理解
- ibatis.net(mybatis.net)1.6.2初始化时出错的原因。
- 查找链表中倒数第k个结点
- 编程初学者的良言警句
- 监视热插拔事件
- Java入门(4)--异常处理
- Android 自定义Dialog样式
- Android之菜单(一)
- 详谈Http协议