2012-05-15 3 views
0

내 질문이 문장 void print(const string& msg = "")의 효과를 기반으로 초기화 void print(const string& msg)에 비해 어떤 차이가있는 경우, 기능은

나는 기능에 대한 매개 변수를 전달하지 않고 함수를 호출 할 수 main()의 인쇄 기능을 사용

? 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

@ 루시아 : 당신 말이 맞아요. 그에 따라 내 대답을 편집했습니다. 그것은 인쇄 내용을 실제로 이해할 수 없을 때 질문의 올바른 형식을 지정하기 전이었습니다. –