2012-05-15 2 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: Вы правы. Я отредактировал свой ответ соответственно. Это было до правильного форматирования вопроса, когда невозможно было понять, что внутри печати. –

Смежные вопросы