重载和虚函数的差别

相同点:

两者都是为了实现多态。

不同点:

1、重载函数要求他们的参数表要不同,虚函数的参数表和返回值都要求相同。

2、重载函数在编译时就已经确定了不同,就是说编译器会根据参数表的不同给予他们不同的函数名,而重载是在程序运行时才确定的。

3、虚函数是为用基类指针访问子类函数设计的。而重载函数只执行指针类型的类的函数。

下面举个例子:

class A { public: void overload_print(){printf("A::overload_print is called/n");} virtual void virtual_print(){printf("A::virtual_print is called/n");} }; class B:public A { public: void overload_print(){printf("B::overload_print is called/n");} virtual void virtual_print(){printf("B::virtual_print is called/n");} }; int _tmain(int argc, _TCHAR* argv[]) { A* pA; B objB; pA=&objB; pA->overload_print(); pA->virtual_print(); getchar(); return 0; } 

上述输出:

A::overload_print is called

B::virtual_print is called

你可能感兴趣的:(C/C++)