带参数初始化的函数

时间:2012-05-15 10:21:54

标签: c++ function

我的问题是基于句子void print(const string& msg = "")的效果, 与void print(const string& msg)

相比有何不同

当我在main()中使用print函数时,我是否可以在不传递函数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");
    } ///:~

2 个答案:

答案 0 :(得分:3)

是的,这是一个默认参数。如果您不提供,将使用空字符串。

因此,调用p.print()等同于调用p.print("")

答案 1 :(得分:2)

是的,你可以这样做。它被称为参数的默认值。因此,调用p.print()与调用p.print(“”)相同。

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