因多載的特性,所以可以容許相同名稱且參數不相同的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;
}
沒有留言:
張貼留言