在 C++ 程式碼中,建立物件 Cwith t(3); 時,預期應輸出傳入的參數 3,但實際輸出卻是兩個 0。圖片展示了相關程式碼片段:
問題出在建構子的參數宣告上:Cstat( float p=0 )。這裡的 p=0 是預設參數值,而非成員初始化。當呼叫 Cwith t(3); 時,實際調用的是預設建構子,導致參數 3 被忽略,成員變數保持初始值 0。
應將建構子改為 Cstat(float p),並在建構子內部將參數賦值給成員變數,或使用成員初始化列表:
class Cstat {
float value;
public:
Cstat(float p) : value(p) {} // 正確初始化
};
C++ 中預設參數值僅在呼叫時未提供引數時生效,若需接收外部傳值,必須在建構子參數列中明確聲明參數,並正確初始化成員變數。