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;
}