C++的多态性

来源:互联网 发布:怎么选择打印机端口 编辑:程序博客网 时间:2024/05/29 02:47

        多态性是面向对象编程的关键思想,它仅用于通过继承而相关连的类型的引用或者指针,引用和指针的静态类型和动态类型可以不同是C++用来支持多态性的基石。在C++中,通过基类的引用或者指针调用虚函数时(用virtual关键字来标识)便触发了动态绑定,这时候编译器通过生成代码,做出到运行时才确定具体调用哪个函数的决定。对于非virtual函数的调用在编译的时候就已经确定。

定义virtual需要注意的地方:

1、只有构造函数和static函数不能声明为虚函数。因为static函数不属于类的对象,他的定义是在编译阶段就已经完成。

2、virtual关键字只能在类内部进行成员函数声明时才能出现,在类外是不能出现的

3、因为virtual是触发动态绑定的标志,所以一个函数一旦在基类中声明为虚函数,那么他就一直是虚函数,在派生类中这一性质也不会变。


静态类型:在编译时可知的引用或者指针类型

动态类型:指针或者引用所绑定的对象的类型仅在运行时才知道的。

C++动态绑定的关键就是对象的实际类型可能和该对象引用或者指针类型不同,只有到运行的时候才能明确确定下来。