C++——虚函数
2016-03-19 21:28
423 查看
前言:
关于什么是虚函数,可以简单的理解为那些被virtual关键字修饰的成员函数即为虚函数。定义:
虚函数是在基类中定义的以virtual关键字作为开头的成员函数,需要在派生类中重新定义。通过指向基类的指针或引用来调用虚函数实现动态联编,它是实现动态联编的基础。语法形式:
virtual 函数类型 函数 (形参表) { 函数体 }
作用:
虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异而采用不同的策略。示例:
#include<iostream> using name spacestd; class A{//虚函数示例代码2 public: virtual void fun(){cout<<"A::fun"<<endl;} virtual void fun2(){cout<<"A::fun2"<<endl;} }; class B : public A{ public: void fun(){cout<<"B::fun"<<endl;} void fun2(){cout<<"B::fun2"<<endl;} };//end//虚函数示例代码2 int main() { void(A::*fun)();//定义一个函数指针 A *p=new B; fun=&A::fun; (p->*fun)(); fun=&A::fun2; (p->*fun)(); delete p; system("pause"); return 0; }
结果:
B::fun B::fun2
注意:
虚函数不能是静态成员函数,也不能是友元函数。因为静态成员函数和友元函数不能属于某个对象。内联函数是不能在运动中动态确定其位置的,即使虚函数在类的内部定义,编译时,仍将其看作非内联的。
只有类的成员函数才能说明为虚函数,虚函数的声明只能出现在类的定义中。因为虚函数仅适用于有继承关系的类对象,普通函数不能说明为虚函数。
构造函数不能是虚函数,析构函数可以是虚函数,而且通常声明为虚函数。
相关文章推荐
- C++并行开发Pthread之线程(一)
- c++杂记
- C++ 编写WebService服务
- C/C++中基本数据类型学习
- ros与下位机通信常用的c++ boost串口应用--22
- 百练2972:确定进制
- <<Effective C++>>读书笔记(三)
- c++第2次上机-3
- 将c语言输出结果输出到txt
- DP骑士游历
- (蓝桥杯) 历届试题 兰顿蚂蚁 (模拟题)
- mingw 编译c++ 最简单的程序出现Program received signal SIGSEGV, Segmentation fault.
- 简单谈谈C++中的引用与指针
- c++第二次上机-2
- C++将分配值8到变量
- C++服务器(五):pthread多线程编程
- 关于c++中stack、queue和priority_queue的介绍
- c++四种类型转换
- c语言:将数组中n个整数按相反顺序存放。
- 六大排序算法C++实现