Dan*_*ker 30
简化语言定义并保持代码可读性.
void foo(int x = 2, int y);
Run Code Online (Sandbox Code Playgroud)
要调用它并利用默认值,您需要这样的语法:
foo(, 3);
Run Code Online (Sandbox Code Playgroud)
这可能觉得太奇怪了.另一种方法是在参数列表中指定名称:
foo(y : 3);
Run Code Online (Sandbox Code Playgroud)
必须使用新的符号,因为这已经意味着:
foo(y = 3); // assign 3 to y and then pass y to foo.
Run Code Online (Sandbox Code Playgroud)
ISO委员会考虑并拒绝了命名方法,因为他们对在函数定义之外引入参数名称的新重要性感到不舒服.
如果您对更多C++设计原理感兴趣,请阅读Stroustrup 的C++设计和演变.
Dan*_*ull 22
如果您定义以下功能:
void foo( int a, int b = 0, int c );
Run Code Online (Sandbox Code Playgroud)
你如何调用该函数并为a和c提供一个值,但是将b保留为默认值?
foo( 10, ??, 5 );
Run Code Online (Sandbox Code Playgroud)
与其他一些语言(例如Python)不同,C/C++中的函数参数不能通过名称限定,如下所示:
foo( a = 10, c = 5 );
Run Code Online (Sandbox Code Playgroud)
如果可能,则默认参数可以是列表中的任何位置.
想象一下,你有这个原型的功能:
void testFunction(bool a = false, bool b = true, bool c);
Run Code Online (Sandbox Code Playgroud)
现在假设我调用了这样的函数:
testFunction(true, false);
Run Code Online (Sandbox Code Playgroud)
编译器应该如何确定我想为哪些参数提供值?
| 归档时间: |
|
| 查看次数: |
9100 次 |
| 最近记录: |