虚函数

简介: Class Base           void say();   Class Sub : Base          void say()   Base b = new Sub(); b.say();//此时调的是哪个类的say方法?               在类的定义中,申明时定义的类叫申明类,执行实例化时候定义的类叫实例类。

Class Base

          void say();

 

Class Sub : Base

         void say()

 

Base b = new Sub();

b.say();//此时调的是哪个类的say方法?

           

 

在类的定义中,申明时定义的类叫申明类,执行实例化时候定义的类叫实例类。例如:

                                    Base1 base1 = new Derived1 ();其中Base1叫做申明类,而Derived1则是实例类。

  此时编译器具体的检查的流程如下

1、当调用函数时,系统会直接去检查申明类,看所调用的函数是否为虚函数;

2、如果不是,那么它就直接执行该函数。如果是virtual函数,则转去检查对象的实例类。

3.在实例类中,若有override的函数,则执行该函数,如果没有,则依次上溯,按照同样步骤对父类进行检查,知道找到第一个override了此函数的父类,然后执行该父类中的函数。(星梦《C#虚函数virtual详解收藏》)

 

http://blog.csdn.net/zhuzhu837_1/article/details/7753938

相关文章
|
7月前
|
编译器 C++
纯虚函数和虚函数
纯虚函数和虚函数
39 0
|
C++
38.【C++ 虚函数 纯虚函数 虚基类 (最全详解)】(一)
38.【C++ 虚函数 纯虚函数 虚基类 (最全详解)】
60 0
|
C++
38.【C++ 虚函数 纯虚函数 虚基类 (最全详解)】(二)
38.【C++ 虚函数 纯虚函数 虚基类 (最全详解)】
126 0
|
4月前
|
编译器 C++ 索引
C++虚拟成员-虚函数
C++虚拟成员-虚函数
|
7月前
|
C++ 编译器 存储
|
7月前
|
编译器 C++
C++的虚函数
C++的虚函数
39 0
|
7月前
|
设计模式 安全 C++
c++ 虚函数小结
c++ 虚函数小结
|
7月前
|
存储 Unix 编译器
C++中虚函数和纯虚函数的问题总结
C++中虚函数和纯虚函数的问题总结
110 0
|
存储 编译器 C++
对C++中的虚函数的说明
对C++中的虚函数的说明
35 0
|
存储 C++
C++ 虚函数,虚函数表
C++ 虚函数,虚函数表