我的问题是基于句子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");
} ///:~
答案 0 :(得分:3)
是的,这是一个默认参数。如果您不提供,将使用空字符串。
因此,调用p.print()
等同于调用p.print("")
。
答案 1 :(得分:2)
是的,你可以这样做。它被称为参数的默认值。因此,调用p.print()
与调用p.print(“”)相同。
Default value to a parameter while passing by reference in C++也适合您。