一,多态性

1,(1)声明了基类的指针,该指针指向基类,该指针永远调用自己的成员函数,不管函数是否为虚函数。

(2)声明了派生类的指针,该指针指向该派生类,该指针永远调用自己的成员函数,不管函数是否为虚函数。

(3)声明了基类的指针,该指针指向任意一个子类对象,该指针调用一个函数(此函数在基类存在,而且在子类中被重新定义),此时编译系统不清楚该调用哪一个函数,而出错。我们可以将该函数设定为虚函数,则程序运行时候,编译系统会知道调用的是基类函数还是子类函数,此即多态。注:如果调用的函数不是虚函数,则调用自己类中的成员函数。如果指针被声明为基类,尽管它指向子类对象,仍然是基类指针。

2,子类重定义父类成员函数方法,被称为覆盖或重写。覆盖的函数都是虚函数。

3,满足虚函数条件或覆盖的特征是:
   (1)不同的范围(分别位于派生类与基类);
   (2)函数名字相同;
   (3)参数相同;
   (4)基类函数必须有virtual 关键字。

二,成员函数重载

成员函数被重载的特征:
(1)相同的范围(在同一个类中);
(2)函数名字相同;
(3)参数不同;
(4)virtual 关键字可有可无。

三,成员函数隐藏

看如下代码:

Base.h

#include <iostream>
using namespace std; class Base{
public:
void fn(int x){
cout << "Base" << x << endl;
}
void fn1(int x){
cout << "Base1" << x << endl;
}
};

SubClass.h

#include <iostream>
using namespace std; class SubClass :public Base{
public:
void fn(float x){
cout << "SubClass" << x << endl;
}
void fn1(int x){
cout << "SubClass1" << x << endl;
}
};

main.cpp

#include <iostream>
#include "A.h"
#include "B.h"
#include "C.h"
using namespace std; int main()
{
C c();
cout << c.GetData() << endl;
cout << c.A::GetData() << endl;
cout << c.B::GetData() << endl;
cout << c.C::GetData() << endl;
cout << c.doGetData() << endl;
cout << c.A::doGetData() << endl;
cout << c.B::doGetData() << endl;
cout << c.C::doGetData() << endl;
return ;
}

运行结果:

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAApkAAAEiCAYAAACySsl5AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAJXdJREFUeF7t3VmwPUddB/B/AAPiFmRJAAWUiIQAEjCQsFk+YCFShYpoDJtLlACREEBUtgCyRhYFl0J9ofSBB3yw8MUHrfgW3mJVrMIXXIgia4iiJiCMPefevnfO3JnpnnO6z13mc6q6/vdsc849/bnn/+3f9PSc14TLP/z9J89d9OALzrn4BHwCPgGfgE/AJ+AT8An4BIp8Am3IvO3WW5ovfu5Tzbmf+cyxtPNe8JlmvN0e7gvtZ29v7pFqP3d7c89Uuyo85qp/a+411X4+3B/at0y1q8P9++38q/+9GWwvDLd32r3Dz0fai8JtnXaf8PNe++xhe3H4ude+NVxfay8J13vtvuH6WnvpfzT3HWjfFm5btV8Yb98e7jtovxh+XrXPHWnfEW5btV8ab98Z7lu1Xx5qnw+377XvuibdLviVzzfJ9qtfaO6Xai/7QvPdqXZteExo97/2i+Pt5eG+/faA8O9ge0W4fb89MPy717603l4Zrnfag8LPR9p14bZOuzD8vN6+3Fz4a0fbReG2tfaqcL3XHhyur7Xrw/VVu2OtPSRcP2ivDj8PtIeG2w7aDeHnwfaV5ntu2G+vCf+OtO8Nt6/aa6fbw157Z/Ow16Xbw3/9zibVHvH6O5u99p/D7TfC7aF931T7zXB/aN9/pP1XuK3Tfiv8HNojx9obwn377eLw79H21ebiN663HwjXj7Q3hds67VHh5yPtzeG2Vfvvg/aD4ee19pZwvdceHa6vtRvD9SPtf5pLbuy0t4afR9pjwu2r9rbxdmm479K3/W9z6dun22PD/Y/97en2uHD/497Rtrsm2+PfeVeTaj/0rrua9XZ3uN5r7767eUKqvefu5rLR9rVwX2jv3WtPnGo3hftDe9JU+52vN0/abz8c/h1s7wu3d9rl4ee19v5wfa39X/Pk9/faB8L1gfaUcNtB+2D4eaBdEW674oPfOGy/G34eaFeG2w7a74WfB9pTw2177ZvNUz803p4W7lu1D4+3p4f7nv773daE60fbM/6gaZbQVrlSyBwInELmkcApZO4FTCFTyDwSNoXMtaApZB6GTyEzhk0hsxs2lxAw299RyByrZgqZQuZQVVPIVMkcqmYKmULmSFVTyBQy51Qy26Lfppcbrr9m06euntc+P4bfbTbU3Y6QKWSudp/bXR52p6d2lbf3C5lCppBpd/n+bvTUrvL2fiFTyJwbMu+841+bue3jH/vIKiS2l7nPbR8fn98NmSW2I2QKmUJmnKspZK7NyzQn83CupjmZ5mQOzc8UMg/nZZqTuTdPc9s5mTEktuFsTuuHzDnPbR87FjK33U5eyHz+vzTnPf/Tof3TjPbp5tzz/zn7ICIH/hwe/OPAHwf+rA4CcuDP4ME/Dvxx4M/QAUAO/HHgz1k48GeRIfM+z/lY85hr/7p53Mv/tnnstX8z2i677ubmCa+8uXniq/6uefLLP9Fc8NyPNuc995NZQVPIFDIPjzQXMoVMR5c7uvzwaHNHl4ejzx1dvnaU+Vk9unyRIfN+r/3H5sL3faW58KawPMpIe9B7v9S88BNfa573F19vXvqJu5o//MCfNVe+6KPNuSffJGRawujIckaWMLKE0dFljCxhtFrKyBJGR5YyEjKFzP4yRkLm+u70/u7ysL5lk9Pi7vBj3V3+I6/58+ayq1/dPOnFr59sV7709c0VobX//uhLrmse85PvaO51+Y3JkDl0FNN6ZXN8ncz43IP1MztrZKaOjmrXyRy7tGtkbnI5slZmCJjdS3eNzNT24zqZQ49r18xs18iMl9V6mWd0ncz+799fO7N/f3fNzHjfBak1Mtv7t5yT2X0f1slcXy/TOpl7a2RaJ7O7XqZ1Mg/Wy0ytkdner5KpkjkxT7N2yIyBtT9Hs397P6xmzcl82nNelpWI+6n5AZf8VHOfK985GTLjf8wxVPav792+WchsF2Ufu/QXY4+PO1igfX8Jo+7z24XZ42W1SHtYiD1e2nDZ/TmGzYPbOmEzJ2jGxdjj8+NC7N3rJyVkxvcUF2YvuRh73HYMlmPXY7A8CJX7C7TvMmS2C7THi5ApZB5ZmF3I7C3ILmQKmRZj76+X2f4f0h7VvekBN/H5bR5LbaP7mFQls5vv4naHbtsoZF7x49euQuazn/3sg/9E25+7L9De0Q+Z9390CJlXjIfMuLH2LEPbzMmM21lVM3tn+9llyOwHzW7AjGf9ibfFoDn2/sZCZvesP/FsP3Ebx1XJrBkyx6qW/dA5FjLb2+NlF2f8ETKd8Wf0rD9CppC5OvuPM/4cnPnHGX+OnPXnpIbMVUVyZBd8N8xuFDIv/7FrVhtvL224jGEz3ta9r/smSoXMbhAbOq3krkJm930MVTJrhMx2l3m8jJ1WMhUyh4JsuzZm6hJPMTn0uPaUkmOXfiWz/7j2dJPtnMyxSzylZPe0kt3H9oPn4O7xzqkmUyFz6H20p5ccu/TP+DP0uDmVzP7z4+klp/rn4PSS4TSS/YvTSu6dbtJpJQ9PLem0koenmnRaSaeV7J9a8iSdVvIkh8yhoNmvlm4dMseSbDd4xsfsKmS2wfMgaFasZB5XyOwGzfY9xLDZPW/5WNCMt8fzlx9c3z9/ebweF2M/uL5/DvPu9fa0kvGyd97yvXOXH962dx7zbsiM98XzmMfr8cCfVNBMVTLb+6eqmP37+tXMtQDaCZbxHOZj7y+euzzef+R65rnL4/PjucsPr+8tYXRwvfNz9/zl8f54/vJ4/TBoOnd56vzlqfOWt/dbJ9M6mdbJ7J3D3LnLB89hflLWySy9u3xoF/nQa2wUMuPu8vY/sLFK5lA1s1TInJqTGSubZz1kjs3JTO0yb8Nl99JWMPutH6RiBXOoknlw/vKZIbP/GqVDZtx+t6o5VOFMhcwYLncdMvufT3cJo+593YDZ/jx2ETJVMi9+o0rmpW8/rGDGn1UyVTJVMveOTJ8zJ7Pq7vKcOZndOZulK5nbhMyhg3/uedXtzdwDf7oH/bT/sZfaXd7OzexfphZjj4+NR5fnhMyxKmYMm6mQ2Q+bq6A5M2TGSmb8t2TITAXMqXmZ/UrmcYXMWMmMu8rnhsxYyVzfVR6WHLtOJVMl86uN3eV2lz/xvSFctu0mIfM0hcyceZDdM/a0/6e1Bw6VrmTu5MCfnDWX5szJbA/4iZepo8u7IWhoTma/mtkGy27rh6haITO+TncZo4PbRo4uT4XMbqhsg+VYyFw70ryzlFF8fG7QHKtitrcfx+7y+P5zjy4fq2S2SxitBcr9JY36ITNeL1XJ7Np7QNiFftBesbdOZrzYXX5H89AbrJNpnczDBdgveavF2J/QXdrIEkaLXMJom5CZk9ly18msuoTR03/iFRstYfTAS346LGH0jtnrZPaPNK8ZMsd2Nw6tk9lfwmjouXPWyRw7wrxbyRx6jaE5mamQ2d3O1C7zqV3lcRv9SmZ3Xmb7mG0P/ImvEw/86X8G3XmaY/13JGyOhMx293n/kgqY8fH9eZj97bQH/6RCZjdoHgbOMB8znFZy6uLAn72De6aaA3/sLre7fL96GauYKplNv4rZXj+LB/6kli9KHbDT/v+zzVJKcWmmrHUyH/+8dzePuPwFzSOvuDq7XXzFVc3Dn/m65vynvC0ZMrddwqhb3Yz/MfermWvXB3aXH6yPGRZoX/28v07marf4WAvrZLZrZbbtSLgM62aubuuc7af9ubtG5sHPLzo8peS9w8/bnLs8/v5xOaNYwTz4d2JO5urgn/0Dfob+PZiP2dtdHtfHrLFOZv/An6Hro9XLzhHmcTH2oWrmwTzNLRdjj6EzHlne/rtWvRyoZLYhc6+K2ba9cHnQnLvcucvD2X+OnF7yDc5d7tzldzeXrVU2w3nL3+Pc5c5dfs3qv7gS4bDUdrJC5j2e9ZfN+c/84+b8Z/zpjPYn4bF/1NzjWX+105DZXydzMGye4ZDZXytzKmT2K2VLCJmTa2UKmc1Fr/ryQXtw+HmtXR+ur9oda+0h4fpBe7V1Mq2TGc7q85Zeu7F7pp/4s8XYLcZuMfZai7GfqkpmW2ms3bZZjH1tnmZvPqaQ+dlmLWgOVDLb3edxCaOzXskUMvcOBLqo3zrhMgZNIfPOJi5vZAkjSxhZwsgSRk/70DebVfvweDspSxgJmb3gKmQe7jLfZnf5nEpmd26mkLn9ucvtLh+uYj4kVDedu9y5yx99pJqpkqmSqZKpkrmDKmbJOZl2l3+26QbNnDmZKpkhYLZHm9tdbnd5WHh9aHF2lUyVTJVMlcxdVTLbBc03aTdcvzcnc5PnDp27vMR2suZk1t5VLmSWO/BHJfPwDEBrBwTtL1lkd7nd5f11M53xJ6yj+aavNo8aam8Ot6+akClkCpm7CJltUDzOFiur276HWUeXC5kjR5ifwKPLhUwh07nLnbu8e7af9meLsVuM3WLs3xhcvuikLWHU331+2q+rZMYli/r/ntIljIRMIVPIFDKFzKOnk3RaSWf8GVojU8hsmppB9kjInHtEksfvnQNU8xkwwAADDDDAAAPrBs61E0Vvu/WWVVDadKKn5202Udfn5nNjgAEGGGCAgbNmoM2WRyqZ8QijbSd9ev7xTt71+fv8GWCAAQYYYOA4DLRnHZoMmTknVveYcxud093n5nNjgAEGGGCAgZNooA2I27Q21AqZ5+A+ibi9Jy4ZYIABBhg4PgMxIPZPPZ1zPe4NFzKFTFVYBhhggAEGGGBgzUA3IM49iEnIhMkXCgMMMMAAAwwwMGhgZyHz5ptvbrptTvk693lTr7HN6895r2OPLfX67XZKvB/bOL7dBz57nz0DDDDAwBIM7CRkxoAVP9D+9ZwPOvWc3NdIbSfnvcx9TO57S233ON576j253xclAwwwwAADDAwZOBMhcyh8jQWykxDU5r6HUlVQXwK+BBhggAEGGGBgVwZSIbN9H2NzNbPnZKZCVU6lrx+0uruNU9vvfpip8Fnr/pz3kOr0Ob9nalvu9yXDAAMMMMAAAzUNTIXM7usOBc3skNluaGpe5ZyQObTLfU74ynls6v3Mvb//njedV5nz3mtisW1fRgwwwAADDDCQa2AsZA49vx80Z4XMoXA4dlvO7u/uY+aEr9xKZT8Ipl4jdb9Kpj/K3D9Kj2OFAQYYYOAsGBgKmVO/VzdoZofMuZW/EiEzFSanQt9UYEyFydT93aruXEA52567TY/3RcYAAwwwwAADNQyk5mROrZ15YkLmUHArGTK3Dcmp5+fuThcyfQnU+BKwTa4YYIABBmoY2EnI7IbAVPiLu6nHdofnzO2cqoR2n9/dJd7f7lgwzHn/Q3Mux153qKI6tqs+Zxs1kNimLx8GGGCAAQYYmGtgZyFz7hvzeJgZYIABBhhggIHTa0DIdCooZxBigAEGGGCAAQaKGxAyoSqOyqjz9I469Z2+Y4ABBhgoZaANme0BPJu2G66/pukG1XNNuNx26y2rFdzjkUGl3qztgM8AAwwwwAADDJwOA21I3LYJmaqhqqEMMMAAAwwwwMCagTYgbtNUMoHypcIAAwwwwAADDBwxEKuQ7V7uuZfsdTKVtU9HWVs/6ScGGGCAAQYYKGVgZwf+bLPG49TamGPrTKbWmiz1Ac7dztAamnO34fG+ABhggAEGGGDgpBvYScjMPePN1IeVOttN7muktlOzw47ztWv+Xrbti44BBhhggAEG+gbORMicOsNP/xc+jqC3TRXXH60/WgYYYIABBhg4jQaOJWSmgl/uaSHjduYEx1qnhcwJknPe52nE5D37EmSAAQYYYICBaGAnIbN9sZxzjk+Fxqnd4XPCW85jU7ve596/SRj2R+qPlAEGGGCAAQZOs4GdhcxNA+TY87pBLyc4poJevxI5duDQWGfnvIecx5xmTN67L0MGGGCAAQYY2Gklc27lL2eOZSpkpnaLd/8IUu9v6rGpXf9znusP0x8mAwwwwAADDJwVAzupZKZCXOr+7u72nMrm0OO3qaSm3l/q/lQV9axg8nv4YmSAAQYYYICBnVYyu6EvVWGMu6nHKpU5cztzDxzq7hLvb3csOOa8/7Fd7f1d8v4Q/SEywAADDDDAwFk1sJNK5ln98PxevhgYYIABBhhggIFhA0Kmc4063ywDDDDAAAMMMFDcgJAJVXFURnRG9QwwwAADDDAgZAqZQiYDDDDAAAMMMFDcgJAJVXFURq9GrwwwwAADDDAgZAqZQiYDDDDAAAMMMFDcgJAJVXFURq9GrwwwwAADDDCws5C5zRqRU2tjdhFPvcY2r1/yD6W/hmbc9kl5fyV/V9vyBcMAAwwwwMByDewkZOaeEWcKYuq837mvkdpOzT+G1ELu/cBZ873Y9nL/6PW9vmeAAQYY2IWBMxEyc851fpwBLlWlzA3IuwDhNXzxMMAAAwwwwEAJA8cSMvtvPCdk9YPa0Ckhcz6QVDWx1v3te8utouY+Luf39RhfFAwwwAADDDBwHAZ2EjK7AWtoTuKckDlUkZwTynIem3o/c++fU0XNeX/HAcVr+oJigAEGGGCAgTkGdhYyp4JWKrQNVQG7z5kTzHIrlf0wnHqN1P05lcycbczpXI/1ZcAAAwwwwAADx2VgJyEzFSJT928SMlNhsvuB57x+bjVyKihuet9x4fC6vpgYYIABBhhgYFMDZyJkpkLoVKDMeW4qhKbuTwXU3Odv2sme5wuCAQYYYIABBnZtYCchsxvkUhXGuJt6bHd4vH1qbufQa3SfN7SN/m1jwS/n/Y/tau+/h374HLt/1yi8ni8iBhhggAEGGNjWwM5C5rZv1PNhZ4ABBhhggAEGTo8BIdNpJZ1WkgEGGGCAAQYYKG6gDZkf/9hHNm43XH9N0w2q55pwue3WW5ovfu5Tq422DzDqOD2jDn2lrxhggAEGGGCghIE2A27bioTMoTmWQ7/g2ONynx/nh5b48OZuK/Uea98/9X5Tr13q87IdX1wMMMAAAwwsw0BbcGwv2/ybFTJzD4aZOrAnFepyg9ImB+8MHbw0djDR1Pan/rBS73/oYKTu9lLP7/4O/feR81xfCsv4UtDP+pkBBhhgoISBbQNm+/yskDkVcFLhMTdI5QSloaPWx0Lh2Ae8aTW1+7yxo9mnQvZQUB/7bHLf41RQLgHMNnxRMcAAAwwwsEwD21QwY0CdFTL7oWgs5OQEvFQlcSho5Yav1B9EKvANPX8oQPaDZ3xezvanKptzfvc5IT/1ubh/mV8k+l2/M8AAAwz0Dey0krnpruJNqm1jIWuTkJkTZlNheep1c36/oTAabxv7N1XlzPm9fGn40mCAAQYYYICBTQzstJKZW8Wcs8t4rPI3VUkcu2+TDzD3Of1AN1Q9nKpqzn3+1GedCp8qm75Mcl17HCsMMMAAA2MGdlLJHApIm6LsV+1yQ+bY83Kf331cqgLY/92GXrsfpIe2mQrDqfeRu8s8pxK6aX95ni8fBhhggAEGlmlg55XMfrUutZt5KLB1Q1EqaPWrcqnHpwLxWLUxJ6ymQt/YLvWxbY99lmN/zP3tC5fL/KP3Za/fGWCAAQZ2YWAnlcyc3bNjjxna7TtWKdw06M3ZPTwW1KZee6pKORWYU5/JUMgc+13GAmwqNO8CodfwZccAAwwwwMDZM3AqKpkxpA0FqFToSwXSnGA6FHSnKqI5lcSxXehDzx0LqVOVyKmKcfwcc6q6/ujP3h+9PtWnDDDAAAO7MHCqKpljIXNONS6nolfrgx8KxKmgN/VeckNm7u+T2l2fux2P8+XFAAMMMMAAA6eikpnabdytzKVQbxMyc6uPc15jTkAeqspu8/yhz3UqaHYDcepzTlVkj+P5m7ym5/iSZIABBhhgYDMDx1bJ7O4CHwpPObucx0JSKiiNBaAUoqGQOVRdTd02VoHMqSTOmTowFfSmPvOpkDzVbzmf33E8f5tqcep3cv9mXzw+N58bAwwwcPYNHEslcyysRXBzQuJQaJmquHVfOxU+huY1jgXI/nsf+h1SAXFuuMsJpd0q76YV1tP+RZDq59P++3n/Z/+LWh/rYwYYOI0Gjq2SORTWpsLnUPVvThjNCbBzOnAquKSqsKn3nbtbOhWeckLonOA55/M5SY9NfU4n6b16L/4jYYABBhg4KwZ2XsnsfnBj1b5USDsrH77fYzdfJELmbj5nnn3ODDDAAANdAzuvZAIIIAMMMMAAAwwwcPYNHGslE7CzD0wf62MGGGCAAQaWaUAl89wyO94fvH5ngAEGGGCAgZoGVDKFzKYmMNv2BcYAAwwwwMAyDahkCplCJgMMMMAAAwwwUNyASiZUxVEZsS5zxKrf9TsDDDDAgKPLBUvBkgEGGGCAAQYYqGpAJROwqsCMao1qGWCAAQYYWKYBczKFTCGTAQYYYIABBhgobkAlE6riqIxYlzli1e/6nQEGGGDAnEzBUrBkgAEGGGCAAQaqGlDJBKwqMKNao1oGGGCAAQaWacCcTCFTyGSAAQYYYIABBoobUMmEqjgqI9Zljlj1u35ngAEGGDAnU7AULBlggAEGGGCAgaoGVDIBqwrMqNaolgEGGGCAgWUaMCdTyBQyGWCAAQYYYICB4gZUMqEqjsqIdZkjVv2u3xlggAEGzMkULAVLBhhggAEGGGCgqgGVTMCqAjOqNaplgAEGGGBgmQbMyRQyhUwGGGCAAQYYYKC4AZVMqIqjMmJd5ohVv+t3BhhggAFzMgVLwZIBBhhggAEGGKhqQCUTsKrAjGqNahlggAEGGFimAXMyhUwhkwEGGGCAAQYYKG5AJROq4qiMWJc5YtXv+p0BBhhgwJxMwVKwZIABBhhggAEGqhpQyQSsKjCjWqNaBhhggAEGlmnAnEwhU8hkgAEGGGCAAQaKG1DJhKo4KiPWZY5Y9bt+Z4ABBhgwJ1OwFCwZYIABBhhggIGqBlQyAasKzKjWqJYBBhhggIFlGjAnU8gUMhlggAEGGGCAgeIGVDKhKo7KiHWZI1b9rt8ZYIABBszJFCwFSwYYYIABBhhgoKoBlUzAqgIzqjWqZYABBhhgYJkGzMkUMoVMBhhggAEGGGCguAGVTKiKozJiXeaIVb/rdwYYYIABczIFS8GSAQYYYIABBhioakAlE7CqwIxqjWoZYIABBhhYpgFzMoVMIZMBBhhggAEGGChuQCUTquKojFiXOWLV7/qdAQYYYMCcTMFSsGSAAQYYYIABBqoaUMkErCowo1qjWgYYYIABBpZpwJxMIVPIZIABBhhggAEGihtQyYSqOCoj1mWOWPW7fmeAAQYYMCdTsBQsGWCAAQYYYICBqgZUMgGrCsyo1qiWAQYYYICBZRowJ1PIFDIZYIABBhhggIHiBlQyoSqOyoh1mSNW/a7fGWCAAQbMyRQsBUsGGGCAAQYYYKCqAZVMwKoCM6o1qmWAAQYYYGCZBszJFDKFTAYYYIABBhhgoLgBlUyoiqMyYl3miFW/63cGGGCAAXMyBUvBkgEGGGCAAQYYqGpAJROwqsCMao1qGWCAAQYYWKYBczKFTCGTAQYYYIABBhgobkAlE6riqIxYlzli1e/6nQEGGGDAnEzBUrBkgAEGGGCAAQaqGlDJBKwqMKNao1oGGGCAAQaWacCcTCFTyGSAAQYYYIABBoobUMmEqjgqI9Zljlj1u35ngAEGGDAnU7AULBlggAEGGGCAgaoGVDIBqwrMqNaolgEGGGCAgWUaMCdTyBQyGWCAAQYYYICB4gZUMqEqjsqIdZkjVv2u3xlggAEGzMkULAVLBhhggAEGGGCgqgGVTMCqAjOqNaplgAEGGGBgmQbMyRQyhUwGGGCAAQYYYKC4AZVMqIqjMmJd5ohVv+t3BhhggAFzMgVLwZIBBhhggAEGGKhqQCUTsKrAjGqNahlggAEGGFimAXMyhUwhkwEGGGCAAQYYKG5AJROq4qiMWJc5YtXv+p0BBhhgwJxMwVKwZIABBhhggAEGqhpQyQSsKjCjWqNaBhhggAEGlmnAnEwhU8hkgAEGGGCAAQaKG1DJhKo4KiPWZY5Y9bt+Z4ABBhgwJ1OwFCwZYIABBhhggIGqBlQyAasKzKjWqJYBBhhggIFlGjAnU8gUMhlggAEGGGCAgeIGVDKhKo7KiHWZI1b9rt8ZYIABBszJFCwFSwYYYIABBhhgoKoBlUzAqgIzqjWqZYABBhhgYJkGzMkUMoVMBhhggAEGGGCguAGVTKiKozJiXeaIVb/rdwYYYIABczIFS8GSAQYYYIABBhioakAlE7CqwIxqjWoZYIABBhhYpgFzMoVMIZMBBhhggAEGGChuQCUTquKojFiXOWLV7/qdAQYYYMCcTMFSsGSAAQYYYIABBqoaUMkErCowo1qjWgYYYIABBpZpwJxMIVPIZIABBhhggAEGihtQyYSqOCoj1mWOWPW7fmeAAQYYMCdTsBQsGWCAAQYYYICBqgZUMgGrCsyo1qiWAQYYYICBZRowJ1PIFDIZYIABBhhggIHiBlQyoSqOyoh1mSNW/a7fGWCAAQbMyRQsBUsGGGCAAQYYYKCqAZVMwKoCM6o1qmWAAQYYYGCZBszJFDKFTAYYYIABBhhgoLgBlUyoiqMyYl3miFW/63cGGGCAAXMyBUvBkgEGGGCAAQYYqGpAJROwqsCMao1qGWCAAQYYWKYBczKFTCGTAQYYYIABBhgobkAlE6riqIxYlzli1e/6nQEGGGDAnEzBUrBkgAEGGGCAAQaqGlDJBKwqMKNao1oGGGCAAQaWacCcTCFTyGSAAQYYYIABBoobUMmEqjgqI9Zljlj1u35ngAEGGDAnU7AULBlggAEGGGCAgaoGVDIBqwrMqNaolgEGGGCAgWUaMCdTyBQyGWCAAQYYYICB4gZUMqEqjsqIdZkjVv2u3xlggAEGzMkULAVLBhhggAEGGGCgqgGVTMCqAjOqNaplgAEGGGBgmQbMyRQyhUwGGGCAAQYYYKC4AZVMqIqjMmJd5ohVv+t3BhhggAFzMgVLwZIBBhhggAEGGKhqQCUTsKrAjGqNahlggAEGGFimAXMyhUwhkwEGGGCAAQYYKG5AJROq4qiMWJc5YtXv+p0BBhhgwJxMwVKwZIABBhhggAEGqhpQyQSsKjCjWqNaBhhggAEGlmnAnEwhU8hkgAEGGGCAAQaKG1DJhKo4KiPWZY5Y9bt+Z4ABBhgwJ1OwFCwZYIABBhhggIGqBlQyAasKzKjWqJYBBhhggIFlGjAnU8gUMhlggAEGGGCAgeIGVDKhKo7KiHWZI1b9rt8ZYIABBszJFCwFSwYYYIABBhhgoKoBlUzAqgIzqjWqZYABBhhgYJkGzMkUMoVMBhhggAEGGGCguAGVTKiKozJiXeaIVb/rdwYYYIABczIFS8GSAQYYYIABBhioakAlE7CqwIxqjWoZYIABBhhYpgFzMoVMIZMBBhhggAEGGChuQCUTquKojFiXOWLV7/qdAQYYYMCcTMFSsGSAAQYYYIABBqoaUMkErCowo1qjWgYYYIABBpZpwJxMIVPIZIABBhhggAEGihtQyYSqOCoj1mWOWPW7fmeAAQYYMCdTsBQsGWCAAQYYYICBqgZUMgGrCsyo1qiWAQYYYICBZRowJ1PIFDIZYIABBhhggIHiBlQyoSqOyoh1mSNW/a7fGWCAAQbMyRQsBUsGGGCAAQYYYKCqAZVMwKoCM6o1qmWAAQYYYGCZBszJFDKFTAYYYIABBhhgoLgBlUyoiqMyYl3miFW/63cGGGCAAXMyBUvBkgEGGGCAAQYYqGpAJROwqsCMao1qGWCAAQYYWKYBczKFTCGTAQYYYIABBhgobkAlE6riqIxYlzli1e/6nQEGGGDAnEzBUrBkgAEGGGCAAQaqGlDJBKwqMKNao1oGGGCAAQaWacCcTCFTyGSAAQYYYIABBoobUMmEqjgqI9Zljlj1u35ngAEGGDAnU7AULBlggAEGGGCAgaoGVDIBqwrMqNaolgEGGGCAgWUaMCdTyBQyGWCAAQYYYICB4gZUMqEqjsqIdZkjVv2u3xlggAEGzMkULAVLBhhggAEGGGCgqgGVTMCqAjOqNaplgAEGGGBgmQbMyRQyhUwGGGCAAQYYYKC4AZVMqIqjMmJd5ohVv+t3BhhggAFzMgVLwZIBBhhggAEGGKhqQCUTsKrAjGqNahlggAEGGFimAXMyhUwhkwEGGGCAAQYYKG5AJROq4qiMWJc5YtXv+p0BBhhgwJxMwVKwZIABBhhggAEGqhpQyQSsKjCjWqNaBhhggAEGlmnAnEwhU8hkgAEGGGCAAQaKG1DJhKo4KiPWZY5Y9bt+Z4ABBhgwJ1OwFCwZYIABBhhggIGqBlQyAasKzKjWqJYBBhhggIFlGjAnU8gUMhlggAEGGGCAgeIGVDKhKo7KiHWZI1b9rt8ZYIABBszJFCwFSwYYYIABBhhgoKoBlUzAqgIzqjWqZYABBhhgYJkGzMkUMoVMBhhggAEGGGCguAGVTKiKozJiXeaIVb/rdwYYYIABczIFS8GSAQYYYIABBhioakAlE7CqwIxqjWoZYIABBhhYpgFzMoVMIZMBBhhggAEGGChuQCUTquKojFiXOWLV7/qdAQYYYMCcTMFSsGSAAQYYYIABBqoaUMkErCowo1qjWgYYYIABBpZpwJxMIVPIZIABBhhggAEGihtQyYSqOCoj1mWOWPW7fmeAAQYYMCdTsBQsGWCAAQYYYICBqgZUMgGrCsyo1qiWAQYYYICBZRowJ1PIFDIZYIABBhhggIHiBlQyoSqOyoh1mSNW/a7fGWCAAQbMyRQsBUsGGGCAAQYYYKCqAZVMwKoCM6o1qmWAAQYYYGCZBszJFDKFTAYYYIABBhhgoLiB0pXM/wdwYgw+pgDlOgAAAABJRU5ErkJggg==" alt="" />

fn()函数不符合虚函数条件,不是虚函数。

从SubClass角度来说,其有void fn(float x)函数,从Base继承了void fn(int x)函数,因此这两个函数在SubClass内应该是重载的,因此主函数中SubClass对象sc,sc.fn(3.1f)应该调用void fn(float x)函数,sc.fn(1)应该调用void fn(int x),但是运行结果显示两个都调用了void fn(float x)函数,这是因为Base中的void fn(int x)函数被隐藏了。

主函数中sc.fn1(2);时候,通过结果知道调用了void fn1(int x)函数,Base中的void fn1(int x)函数被隐藏了。

因此知道符合函数隐藏条件是:

(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏。注意别与重载混淆。
(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字。此时,基类的函数被隐藏。注意别与覆盖混淆。

C++中重载、覆盖和隐藏的更多相关文章

  1. C++中的覆盖与隐藏(详细讲解)

    C++类中覆盖与隐藏一直是一个容易理解出错的地方,接下来我就详细讲解一下区别在何处 覆盖指的是子类覆盖父类函数(被覆盖),特征是: 1.分别位于子类和父类中 2.函数名字与参数都相同 3.父类的函数是 ...

  2. JAVA中方法和变量在继承中的覆盖和隐藏

    出处:http://renyanwei.iteye.com/blog/258304 我们知道,在JAVA中,子类可以继承父类,如果子类声明的方法与父类有重名的情况怎么办,大伙儿都知道要是重写,但是实际 ...

  3. JAVA中方法和变量在继承中的覆盖和隐藏(一)

    我们知道,在JAVA中,子类可以继承父类,如果子类声明的方法与父类有重名的情况怎么办,大伙儿都知道要是重写,但是实际上这又分为两种情况,就是方法和变量在继承时的覆盖和隐藏问题,这些概念性的东西看似无聊 ...

  4. makefile中重载与取消隐藏规则示例

    学习<跟我一起写Makefile-陈皓>后一直不懂,如何重载或取消隐藏规则 为了博客版面整洁,何为隐藏规则,Makefile基本规则编写等基础支持请自行百度. 需要声明的是:这些知识可能在 ...

  5. Java中的覆盖和隐藏以及final关键字

    Java覆盖和隐藏 (1) 变量只能被隐藏(包括静态和非静态),不能被覆盖: (2) 可以用子类的静态变量隐藏父类的静态变量,也可以用子类的非静态变量隐藏父类的静态变量,也可以用非最终变量(final ...

  6. c++中 重载 覆盖 隐藏的区别 附加 mutable笔记

    成员函数被重载的特征有: 1) 相同的范围(在同一个类中): //2) 函数名字相同: 3) 参数不同: 4) virtual关键字可有可无. 覆盖的特征有: 1) 不同的范围(分别位于派生类与基类) ...

  7. C++之重载覆盖和隐藏

    继承体系下同名成员函数的三种关系 重载 在同一作用域内 函数名相同,参数列表不同(分三种情况:参数个数不同,参数类型不同,参数个数和类型都不同) 返回值类型可以相同也可以不同 重写(覆盖) 在不同作用 ...

  8. C++中的重载、覆盖、隐藏

    前几天面试时被问及C++中的覆盖.隐藏,概念基本答不上来,只答了怎么用指针实现多态,也还有遗漏.最终不欢而散.回来后在网上查找学习了一番,做了这个总结.其中部分文字借用了别人的博客,望不要见怪.引用的 ...

  9. C++中的重载隐藏覆盖&&JAVA中的重载覆盖&&多态

    class 类继承默认是private, struct 默认继承是public C++中的隐藏: 只要派生类中出现和基类一样的函数名,基类中的函数就会被派生类中的函数给隐藏(如果派生类和基类中的函数名 ...

  10. C++中重载、重写(覆盖)和隐藏的区别实例分析

    这篇文章主要介绍了C++中重载.重写(覆盖)和隐藏的区别,是C++面向对象程序设计非常重要的概念,需要的朋友可以参考下 本文实例讲述了C++中重载.重写(覆盖)和隐藏的区别,对于C++面向对象程序设计 ...

随机推荐

  1. 迷你MVVM框架 avalonjs 0.93发布

    这段时间吸取@limodou, @东灵等人的意见,做了以下改进 重构isArrayLike,提高avalon.each的性能,原来avalon.each是依赖于isArrayLike来判定是循环普通对 ...

  2. Fundamentals of Garbage Collection

    [Fundamentals of Garbage Collection] 1.Reclaims objects that are no longer being used, clears their ...

  3. 【bzoj1087】互不侵犯King 状态压缩dp

    AC通道:http://www.lydsy.com/JudgeOnline/problem.php?id=1087 [题解] 用f[i][j][k]表示前i行放了j个棋子且第i行的状态为k的方案数. ...

  4. java 线程之对象的同步和异步

    一.多线程环境下的同步与异步 同步:A线程要请求某个资源,但是此资源正在被B线程使用中,因为同步机制存在,A线程请求不到,怎么办,A线程只能等待下去. package com.jalja.org.th ...

  5. 将Oracle数据库设置为归档模式及非归档模式

    一.将Oracle数据库设置为归档模式 1)sql>shutdown normal/immediate;2)sql>startup mount;3)sql>alter databas ...

  6. h5 时间控件问题,怎么设置type =datetime-local 的值

    在js中设置自定义时间到date控件的方法: 1.在html5中定义时间控件 <input type="date" id="datePicker" val ...

  7. 第十届国际用户体验创新大赛携Mockplus走进校园

    今日立夏,万木并秀,生生不息,第十届国际用户体验创新大赛即将拉开序幕.5月5日下午,一场用户体验设计经验分享活动携带众多嘉宾降临成都理工大学,为西南赛区首站赛事宣讲. 本次宣讲活动邀请了华为技术有限公 ...

  8. abp AutoMap Custom Mapping

    [DependsOn(typeof(AbpAutoMapperModule))] public class MyModule : AbpModule { public override void Pr ...

  9. Requests接口测试-对cookies的操作处理(一)

    大家都对cookie都不陌生,我们本篇文章使用requests结合cookie进行实例演示.我们使用一个接口项目地址,因为接口项目涉及到隐私问题,所以这里接口的地址我暂时不会给大家开放,但是我会给大家 ...

  10. python之使用API(WEB应用编程接口)

    1.处理API响应 import requests #执行API调用并存储响应 url = "https://api.github.com/search/repositories?q=lan ...