关于C++中缺省参数的一些有趣事实

预测下列C++程序的输出。

null

1)

#include <iostream>
void init( int a=1, int b=2, int c=3);
int main()
{
init();
return 0;
}
void init( int a=1, int b=2, int c=3)
{
std::cout << a << ' ' << b << ' ' << c;
}


上述程序乍一看是正确的,但编译失败。如果函数使用 默认参数 那么默认参数不能同时写入函数声明和定义中。它应该只是在声明中,而不是在定义中。

下面的程序现在是正确的。

#include <iostream>
void init( int a=1, int b=2, int c=3);
int main()
{
init(); // It is fine
return 0;
}
void init( int a, int b, int c)
{
std::cout << a << ' ' << b << ' ' << c;
}


2)

#include <iostream>
// something looks missing
void init( int =1, int =2, int =3);
int main()
{
init();
return 0;
}
void init( int a, int b, int c)
{
std::cout << a << ' ' << b << ' ' << c;
}


如果你仔细观察函数原型,它看起来像一个错误,但实际上不是。默认参数中可以省略变量名。

本文由 普拉瓦西会面 。如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请发表评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享