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");
    } ///:~
4

2 回答 2

3

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

所以, callp.print()相当于 call p.print("")

于 2012-05-15T10:23:03.493 回答
2

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

在 C++ 中通过引用传递时参数的默认值也与您相关。

于 2012-05-15T10:24:39.260 回答