0
有人可以告訴,在這段代碼中,如何聲明構造函數,使得當對象被實例化時,height被初始化爲傳遞值,而width始終是默認值(在下面的情況下爲2)。構造函數中的成員初始化
class rectangle{
int width, height;
public:
// rectangle(int w = 1, int h = 1): width(w), height(h){}
rectangle(int w = 2, int h=1): width(w) {height = h;}
int getW(){return width;}
int getH(){return height;}
};
int main()
{
rectangle r1(1);
rectangle r2(2);
rectangle r3(4);
rectangle r4(5);
cout << "w = " << r1.getW() <<" h = " << r1.getH() << endl;
cout << "w = " << r2.getW() <<" h = " << r2.getH() << endl;
cout << "w = " << r3.getW() <<" h = " << r3.getH() << endl;
cout << "w = " << r4.getW() <<" h = " << r4.getH() << endl;
}
Output with above code:
w = 1 h = 1
w = 2 h = 1
w = 4 h = 1
w = 5 h = 1
有人可以告訴我如何聲明構造函數,以便輸出如下(我想聲明只有一個參數的對象)?
w = 1 h = 1
w = 1 h = 2
w = 1 h = 4
w = 1 h = 5
感謝本傑明,你是正確的,我的措辭是混亂的。我正在從一個在線講座系列中學習,並且真的很想了解成員如何初始化,所以這主要是一個理論練習。一般來說,我想學習的是當有多個參數時,如何使用默認值初始化第一個參數(本例中爲寬度)。我所有的構造函數組合似乎都將這個值傳遞給了寬度,在默認情況下保持高度。那有意義嗎? – kaushal
@ kaushal98:是的,這是有道理的。但是,這不可能,只有一個功能。然而,你可以用多個重載來模擬它,這就是我的答案所展現的。 –
@Banjamin:抱歉不小心刪除了我之前的評論。我想這是不可能的,甚至是愚蠢的,但我仍然想確認。我們能否定義這樣的結構,使得當像矩形r1(1),r2(2),r1設置w和r2設置h時實例化? – kaushal