2012-05-15 7 views
0

Ma question est basé sur l'effet de la phrase void print(const string& msg = ""), Quelle différence si on les compare avec void print(const string& msg),fonction avec le paramètre initialize

Quand j'utilise la fonction d'impression dans main(), pourrais-je appeler la fonction sans passer un paramètre pour la fonction print()? comme 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

Veuillez utiliser l'aperçu pour vérifier la mise en forme de votre code avant de publier la question. –

Répondre

3

Oui, c'est un paramètre par défaut. Si vous n'en fournissez pas, une chaîne vide sera utilisée. Par conséquent, appeler le p.print() équivaudrait à appeler p.print("").

2

Oui, vous pouvez le faire. il est connu comme une valeur par défaut pour un paramètre. Ainsi, appeler p.print() revient à appeler p.print ("").

Default value to a parameter while passing by reference in C++ est également la lecture pertinente pour vous.

+0

merci beaucoup – user1279988

+0

@Luchian: Vous avez raison. J'ai édité ma réponse en conséquence. C'était avant le formatage correct de la question quand on ne pouvait pas vraiment comprendre ce qu'il y avait dedans. –

Questions connexes