带有参数初始化的函数

function with parameter initialize

本文关键字:函数 初始化 参数      更新时间:2023-10-16

我的问题是基于句子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");
    } ///:~

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

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

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

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