C++重寫,重載,重定義

ObjectDiagram1.png
//
//  main.cpp
//  C++重載重寫重定義
//
//  Created by 扆佳梁 on 16/8/2.
//  Copyright ? 2016年 Eric. All rights reserved.
//

#include <iostream>
using namespace std;

class Parent{
public:
    void abc(){
        cout<<"abc"<<endl;
    }
    
    virtual void func(){
        cout<<"func() do"<<endl;
    }
    virtual void func(int i){
        cout<<"func() do ..."<<i<<endl;
        
    }
    
    void func(int i,int j){
        
        cout<<"func() do ..."<<i<<" "<<j<<endl;
    }
    
    virtual void func(int i,int j,int m,int n){
        cout<<"func() do "<<i<<" "<<j<<m<<n<<endl;
    }
    
};

class Child:public Parent{
public:
    void abc(){
        cout<<"child abc"<<endl;
    }
    
    void func(int i,int j){
        cout<<"child func do "<<endl;
    }
    
    virtual void func(int i,int j,int k){
        cout<<"child func(int i,int j,int k)"<<endl;
    }
    
};

int main(int argc, const char * argv[]) {
    // insert code here...
    std::cout << "Hello, World!\n";
    
    Child c1;
    //c1.func()會報錯
//1 C++編譯器 看到func名字 ,因子類中func名字已經存在了(名稱覆蓋).所以c++編譯器不會去找父類的4個參數的func函數
//2 c++編譯器只會在子類中,查找func函數,找到了兩個func,一個是2個參數的,一個是3個參數的.
//3 C++編譯器開始報錯.....  error C2661: “Child::func”: 沒有重載函數接受 4 個參數
//4 若想調用父類的func,只能加上父類的域名..這樣去調用..

    c1.Parent::func();
    c1.func(1, 2);
    Parent *p = NULL;
    p = &c1;
    p->abc();
    
     return 0;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 一、重載(overload) 指函數名相同,但是它的參數表列個數或順序,類型不同。但是不能靠返回類型來判斷。 (1...
    Pitfalls閱讀 3,620評論 0 1
  • http://www.cnblogs.com/feiguo/archive/2013/11/29/3449352....
    胡天奕閱讀 560評論 0 0
  • 重載(overload) 重載函數是函數的一種特殊情況。為方便使用,C++允許在同一范圍中聲明幾個功能類似的同名函...
    FlyingPenguin閱讀 586評論 0 0
  • 年少不聽李宗盛。 小的時候只覺得李宗盛式的唱法很怪異,直到他的山丘被胡彥斌翻唱之后,才明白曲中字字句句透露著人生的...
    a5126be9d8d9閱讀 266評論 0 0
  • 水彩。中午休息時間畫的,三個中午。 吳竹和秋宏齋毛筆~
    3ca57119cf41閱讀 288評論 4 7