C++ —— 重載、覆蓋和隱藏

來源:互聯網
上載者:User

標籤:

一、重載

發生在同一個類當中,當在同一類當中定義了方法A,然後又定義了方法B,B和A的方法名相同,但是參數不同,那麼再是稱B重載了方法A。

class test{public:    void A();    void A(int);}

二、覆蓋

發生在子類和父類當中,在父類當中定義了方法A,並且其為virtual類型;在子類當中又一次定義了方法A,參數和父類當中的相同。這是稱子類當中的方法A覆蓋了父類當中的方法A。

class base{public:    virtual void fun(int);}class d:public base{public:   void fun(int);}

三、隱藏

發生在子類和父類當中,如果在父類當中定義了方法A,在自類當中再一次定義了同名的方法A,但是參數不同,這是父類當中的方法被屏蔽掉。

例如

class test{public:    void fun();}class d:public test{public:    void fun(int);}
test * t = new d;t->fun();//okt->fun(12);//error

也就是衍生類別當中的方法肯定是無法被基類調用的,這點實際上和隱藏沒有關係,只是類繼承和多態的效果

d dd;d.fun();//errord.fun(12);//ok

上面的意思是通過衍生類別調用父類當中的,已經被屏蔽的方法,會報錯

解決上面問題的方法是是使用using

class d:public test{public:    ........    using test:fun;}

 

C++ —— 重載、覆蓋和隱藏

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.