2012-05-15 116 views
0

我的問題是基於句子void print(const string& msg = ""),效果 什麼區別,如果與void print(const string& msg)相比,功能與參數初始化

當我使用main()打印功能,我可以打電話功能,不傳遞參數的功能print()?像p.print()

class Point { 
     int i, j, k; 
    public: 
     Point(): i(0), j(0), k(0) {} 
     Point(int ii, int jj, int kk) 
     : i(ii), j(jj), k(kk) {} 
     void print(const string& msg = "") const { 
     if(msg.size() != 0) cout << msg << endl; 
     cout << "i = " << i << ", " 
      << "j = " << j << ", " 
      << "k = " << k << endl; 
     } 
    }; 

    int main() { 
     Point p, q(1,2,3); 
     p.print("value of p"); 
     q.print("value of q"); 
    } ///:~ 
+0

請在發佈問題之前使用預覽檢查您的代碼格式。 –

回答

3

是的,這是一個默認參數。如果您不提供一個,則會使用空字符串。

因此,撥打p.print()將等同於撥打p.print("")

2

是的,你可以這樣做。它被稱爲參數的默認值。因此,調用p.print()與調用p.print(「」)相同。

Default value to a parameter while passing by reference in C++也適合您閱讀。

+0

非常感謝 – user1279988

+0

@Luchian:你說得對。我相應地編輯了我的答案。當人們無法真正理解印刷內容時,這是在對問題進行正確格式化之前。 –