【问题标题】:function with parameter initialize带参数初始化的函数
【发布时间】:2012-05-22 20:14:41
【问题描述】:

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

【问题讨论】:

  • 请在发布问题之前使用预览检查您的代码格式。

标签: c++ function


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    是的,你可以这样做。它被称为参数的默认值。所以,调用p.print() 和调用 p.print("") 是一样的。

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

    【讨论】:

    • @Luchian:你是对的。我相应地编辑了我的答案。那是在正确格式化问题之前,当人们无法真正理解打印内容时。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-25
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    相关资源
    最近更新 更多