以下类的定义只是为了说明虚拟机制而设计:
class Animal{
public:
int getNum();
}
class Bird : public Animal
{
public:
int getNum();
}
Animal *pa = new Bird();
1、pa->getNum();此时调用的是Animal类的getNum()
修改Bird类为:
class Bird : public Animal
{
public:
int getNum();
virtual int getAge();
}
2、pa->getAge();编译错误:Animal类中不存在getAge()
重新定义Animal与Bird类:
class Animal{
public:
virtual int getNum();
}
class Bird : public Animal
{
public:
int getNum();
}
3、pa->getNum();此时调用的是Bird类中的getNum()
class Query{
public:
virtual void show() = 0;
}
包含纯虚拟函数的类为抽象基类。试图创建一个抽象基类的独立对象会导致编译时刻错误。
虚拟函数的静态调用:
假如Query类以及派生类NameQuery定义了虚拟函数 isA();
//在编译时刻静态调用 isA()
Query *pq = new NameQuery( "dumbo" );
pq->Query::isA();//破坏了虚拟机制,调用基类的isA()
分享到:
相关推荐
团队学生技术交流讲座(XXXX)_ 第2课_理解C++虚拟多态机制.pptx
团队学生技术交流讲座(XXXX)_第2课_理解C++虚拟多态机制.pptx
主要介绍了简述C++中虚拟函数的内存分配机制,帮助大家更好的理解和学习c++,感兴趣的朋友可以了解下
比如:虚函数必须要通过一种间接的运行时(而不是编译时)机制才能够激活(调用)的函数,而虚继承也是必须在运行时才能够进行定位访问的一种体制。存在,但间接。其中关键在于存在、间接和共享这三种特征。
C++虚拟与多态学习,帮你更深刻的理解虚拟与多态,更深刻的理解C++。技术更上一层楼
先看第一种简单的情形,所有类中没有任何虚函数的菱形继承。 下面是c++源码: class Top {//虚基类 public: int i; Top(int ii) { i = ii; } }; class Left : public virtual Top { public: ...
1.1 程序对内存的使用方法 1.2 C++ Class内存格局 1.3 编译期和执行期 <br/>2封装 2.1 封装的目的和意义 2.2 封装的实现机制 2.2.1 类成员函数的调用方法 2.2.2 封装的性能问题...
本书还展示了C++语言间接支持的核心习惯用法,诸如虚拟构造函数、原型对象以及高级垃圾收集技术。 本书要点: .展示了使用C++高级技术所获得的好处和潜在的缺陷。 .用少而精的例子展示如何有效地组合C++抽象机制。...
本书专注于C++面向对象程序设计的底层机制,包括结构式语意、临时性对象的生成、封装、继承,以及虚拟——虚拟函数和虚拟继承。这本书让你知道:一旦你能够了解底层实现模型,你的程序代码将获得多么大的效率。...
第1篇阐述C++的关键语法,包括重载、虚拟函数、静态成员、类模板、多重继承和内嵌类等内容;第2篇介绍MFC的核心机制,重点剖析窗口封装类CWnd及其派生类,以及Windows窗口操作的相关内容,阐释了MFC的消息映射与消息...
第1篇阐述C++的关键语法,包括重载、虚拟函数、静态成员、类模板、多重继承和内嵌类等内容;第2篇介绍MFC的核心机制,重点剖析窗口封装类CWnd及其派生类,以及Windows窗口操作的相关内容,阐释了MFC的消息映射与消息...
第1篇阐述C++的关键语法,包括重载、虚拟函数、静态成员、类模板、多重继承和内嵌类等内容;第2篇介绍MFC的核心机制,重点剖析窗口封装类CWnd及其派生类,以及Windows窗口操作的相关内容,阐释了MFC的消息映射与消息...
第1篇阐述C++的关键语法,包括重载、虚拟函数、静态成员、类模板、多重继承和内嵌类等内容;第2篇介绍MFC的核心机制,重点剖析窗口封装类CWnd及其派生类,以及Windows窗口操作的相关内容,阐释了MFC的消息映射与消息...
《深度探索C++对象模型》专注于C++面向对象程序设计的底层机制,包括结构式语意、临时性对象的生成、封装、继承,以及虚拟——虚拟函数和虚拟继承。这本书让你知道:一旦你能够了解底层实现模型,你的程序代码将获得...
虚拟函数是C++语言引入的一个很重要的特性,它提供了“动态绑定”机制,正是这一机制使得继承的语义变得相对明晰。 (1)基类抽象了通用的数据及操作,就数据而言,如果该数据成员在各派生类中都需要用到,那么就...
从进程空间,内存状态,虚拟内存,内存映射文件,堆,堆栈方面,介绍了Windows内存管理机制及C++内存分配。《windows核心编程》中的精华浓缩。
本书专注于C++面向对象程序设计的底层机制,包括结构式语意、临时性对象的生成、封装、继承,以及虚拟——虚拟函数和虚拟继承。这本书让你知道:一旦你能够了解底层实现模型,你的程序代码将获得多么大的效率。...
对于C++底层机制感兴趣的读者,这本书会给你“漫卷诗书喜欲狂”的感觉。 了解C++ Object Model,是学习Component ObjectModel的最短路线。 如果你是一位C++程序员,渴望对于底层知识获得一个完整的了解,那么Inside ...
本书专注于C++面向对象程序设计的底层机制,包括结构式语意、临时性对象的生成、封装、继承,以及虚拟——虚拟函数和虚拟继承。这本书让你知道:一旦你能够了解底层实现模型,你的程序代码将获得多么大的效率。...
类的继承是C++语言的一种基本机制,派生类可以继承基类的成员变量和成员函数。如果派生类以public方式继承基类,那么基类的protected成员和public成员在派生类中的访问类型分别是protected和public。 运算符重载 ...