2008年8月22日 星期五

C++ - function 參數配對

當呼叫一個function時,
因多載的特性,所以可以容許相同名稱且參數不相同的function存在,
例如:

int sum(int a,int b) { return a+b;}
double sum(double a,double b) {return a+b; }

這個與c++ - 類別範本 (class template) 又有一點不一樣。這一個是先定義有多少種情況,而c++ - 類別範本 (class template) 是之後才決定輸入的參數是什麼。

同時,這裡有另一個情況,假設存在以下的建構子:

QGrid ( int n, QWidget * parent = 0, const char * name = 0, WFlags f = 0 )

當使用

QGrid( 4, someone_parent );

會執行此建構子,剩下的部分則是用預設值,其它都是0啦。
呼叫的時候會由左到右比對,若剩下沒有比對到的,且有預設值,則不會發生錯誤。

[2008.12.22 補充]
在建立一個新的類別時,有分為定義(.h)與實作(.cpp)


class father{
public:
father(int para_x,int para_y=0); // 預設參數值必需要設定在這裡
private:
int x,y;
};

father::father(int para_x,int para_y){ // 這裡沒有預設參數值,這裡只是實作
x=para_x;
y=para_y;
}

沒有留言: