C++中虚函数和普通函数的区别
2014-05-19 20:36
148 查看
虚函数跟普通函数的区别就是当基类指针或引用指向派生类对象时,通过指针或引用调用成员函数,对于非虚函数,调用的是静态类型(指针/引用类型)的版本,对于虚函数,在运行时动态绑定,调用的是实际类型的版本。例子看输出的前两行。
#include "stdafx.h" #include <iostream> using namespace std; class A { public: virtual void test() { cout<<"A:test()"<<endl; }; void foo() { cout<<"A:foo()"<<endl; }; }; class B : public A { public: void test(){ cout<<"B:test()"<<endl; }; void foo(){ cout<<"B:foo()"<<endl; }; }; int _tmain(int argc, _TCHAR* argv[]) { A* a = new B; a->test();//虚函数,动态绑定,调用动态类型(实际对象类型)B版本 a->foo();//非虚函数,调用静态类型(指针类型)A的版本 B* b = new B; b->test();//虚函数,动态绑定,调用动态类型B版本 b->foo();//非虚函数,调用静态类型(指针类型)A的版本 b->A::foo();//这两个指定是调用A类版本 b->A::test(); return 0; }
相关文章推荐
- C++ 在继承中虚函数、纯虚函数、普通函数,三者的区别
- C++ 在继承中虚函数、纯虚函数、普通函数,三者的区别
- C++之普通成员函数、虚函数以及纯虚函数的区别与用法要点
- C++ 在继承中虚函数、纯虚函数、普通函数,三者的区别
- 在c++中普通函数与 内联函数的区别
- C++ 在继承中虚函数、纯虚函数、普通函数,三者的区别
- C++ 在继承中虚函数、纯虚函数、普通函数,三者的区别
- C/C++之宏、内联函数和普通函数的区别
- C++ 普通函数和虚函数调用的区别
- C++之普通成员函数、虚函数以及纯虚函数的区别与用法要点
- C++ 在继承中虚函数、纯虚函数、普通函数,三者的区别
- C++ 类在继承中虚函数、纯虚函数、普通函数,三者的区别
- C++ 在继承中虚函数、纯虚函数、普通函数,三者的区别
- c++异常参数传递和普通函数参数传递的区别。
- C/C++之宏、内联函数和普通函数的区别
- C++ 在继承中虚函数、纯虚函数、普通函数,三者的区别
- C++ 中使用构造函数初始化列表和普通构造函数内部初始化的区别
- C++ 在继承中虚函数、纯虚函数、普通函数,三者的区别
- 内联函数背景、例子、与普通函数的区别及要注意的地方 ------新标准c++程序设计
- C++中虚函数、纯虚函数、普通函数,三者的区别