虚函数与重载函数的关系
上一篇 /
下一篇 2012-08-02 10:00:26
/ 个人分类:C++
51Testing软件测试网3oy?c'w&h/A ZUn 1、普通的函数重载是,函数的参数或参数类型必须先有所不同,返回类型也可不同。
0x9I^n+N$cP0.rb5@3[\&[ H2B0 2、虚函数重载时,要求函数名,返回类型,参数个数,参数类型,顺序都要与基类函数原型完全相同51Testing软件测试网o9gxNKhopRa
51Testing软件测试网3s5S R%C6We a、当返回类型不相同,其他完全相同,则报错
it^^Ug2uF051Testing软件测试网4uo,}}Q ] b、函数名相同,而参数个数,参数类型,顺序不同,系统视为普通重载,失去虚函数特性51Testing软件测试网@n3bZY*u/Yez
#include<iostream>51Testing软件测试网Y![:x\*RI n5? using namespace std;51Testing软件测试网:^
@bQ|#G,K6p G4d#o class Base{51Testing软件测试网p9Y\:L
L3x public: .U
f2`O,Ut@H%S0 virtual void f1(); C"R Mf4Sx0 virtual void f2();51Testing软件测试网Or2N#a-h`/b$w([2y virtual void f3();51Testing软件测试网8G6p7q5MlM6~U void f4(); oe^`dg8iI ijJ0}; l9T/V}]K`-}g0class Deriverd:public Base{51Testing软件测试网:S0S9` @0`lE public: "j2l@p3h"fZMr)r0 virtual void f1();//是虚函数,这里的virtual可以不写51Testing软件测试网6YTQF%V'@ fO void f2(int x); //与Base的f2()作为普通函数重载,虚特性消失51Testing软件测试网[$hi'N[/U //char void f3(); //错,与基类的返回类型不同 #fu"usr^z0 void f4();51Testing软件测试网 R*Fp#q#_lO };51Testing软件测试网ad4}A,UM3D7a5K void Base::f1()51Testing软件测试网'rx&[TAJ { y/HE.tdE#r&[0u0 cout<<"base f1()"<<endl; 0\6F'jBHo$vu7f0} M$]U ?;dfe0void Base::f2() eH"}?w+^&\0{51Testing软件测试网pR['W`!V%Da8V cout<<"base f2()"<<endl; l"Yk/U^a(YA%CEp0} ^;lyh:NF0void Base::f3()51Testing软件测试网2v'I
SOI!B:F
e\h {51Testing软件测试网,JB*B
Mx:LM? cout<<"base f3()"<<endl;51Testing软件测试网3dwRu:od }51Testing软件测试网Wu-^z{!X~ void Base::f4() Qn&l$G(i|$U)m0{51Testing软件测试网#me;MP J'cmj cout<<"base f4()"<<endl; :iOD'_.Zv9}!p!o:y$fi.a0} qQAEd&gd;b4s
x`0void Deriverd::f1()51Testing软件测试网;x2`_#cb~"S_0A { 4pR[z%m'c3bA0?:x0 cout <<"Deriverd f1()"<<endl;51Testing软件测试网)[:G!L_0H }51Testing软件测试网F'A(M/V9r9w void Deriverd::f2(int x)51Testing软件测试网
X vi#rgZf-dg3? {51Testing软件测试网T+[8B]7v6T;L cout <<"Deriverd f2(int x)"<<endl;51Testing软件测试网6f-G_+yj\V&O } '?Y\p?6rw0//void Deriverd::f3() ]o0w!G+y1pD)r0//{ '@:f[k/@#cR{!l|0// cout<<"Deriverd f3()"<<endl;51Testing软件测试网5PX#Rq(o //} a5D3P1|e8\C6d!j0void Deriverd::f4() iz'j4@4l1}W rM
l9]r0{51Testing软件测试网-[0O2C3q.yx cout <<"Deriverd f4()"<<endl;51Testing软件测试网jSr^5y a.f }51Testing软件测试网0rA'zO8H$E6M
aj int main() NP?|[*CA0{51Testing软件测试网RU/A} J,W Base b,*bp; m+OU1}}t0 Deriverd d;51Testing软件测试网7]Ic`(BZ bp=&d; 0_7x?mhg{0 bp->f1();51Testing软件测试网`d+Z5A1XjI bp->f2();51Testing软件测试网ZS.@}@-^F3o5U bp->f3(); 5Nfp.P-YMx0 bp->f4(); g+PDS
kbu0 return 0;51Testing软件测试网LS JT3tcg@~{ } |
51Testing软件测试网?#xcp*x4Ba6U4wZ
收藏
举报
TAG: