第08讲 函数缺省参数
相对于 Java,这是 C++ 特有的功能,对程序的扩充性有一定好处,是 C++ 灵活性的一个体现。这部分内容两个老师各讲了一次。
视频地址: 1. https://www.coursera.org/learn/cpp-chengxu-sheji/lecture/r9ucP/han-shu-que-sheng-can-shu 2. https://www.coursera.org/learn/cpp-chengxu-sheji/lecture/sI1gG/nei-lian-cheng-yuan-han-shu-he-zhong-zai-cheng-yuan-han-shu
一个函数在定义时,可以设置参数的缺省值。调用函数时,可以通过省写参数值调用这些缺省值。
例如:
void hello(string firstName, string lastName = "", string middleName = "");
调用时可以这样:
hello("Yi", "Cao", "Zong");
hello("Yi", "Cao");
hello("Yi");
以上,可以省略最有边的一个或多个参数。但不可以只省略当中的参数,如:
hello("Yi",,"Zong");
(代码下载)
注意
调用重载函数时,可能因为有的函数设置了缺省参数引发歧义,导致编译失败:
class Hello {
private:
int x, y;
public:
void init(int x = 0, int y = 0);
// 如果要使用缺省参数就会和下一个方法混淆
void valueX(int val = 0) { x = val; }
int valueX() { return x; }
};
...
Hello a;
a.valueX(); //ERROR! 编译器无法判断调用哪个 valueX
(代码下载)