c++函数定义默认形参

status_t postMessageSync(const sp& msg, nsecs_t reltime = 0, uint32_t flags = 0);

mFlinger->postMessageSync(msg);

1.若函数具有多个形参,则默认形参值必须自右向左连续地定义,并且在一个默认形参值的右边不能有未指定默认值的参数。这是由于c++语言在函数调用时参数是自右向左入栈这一约定决定的。

eg:int f(int a, float b=5.0, char c='c');

2.在调用一个函数时,如果省去了某个实参,则直到最右端的所有实参都得省去(当然,与其对应的形参要有默认值)。

eg:int f(int a, float b=5.0, char c='c', int d=10);         f(9,4.5) <=> f(9,4.5,'c',10).

3.默认形参值的说明必须出现在函数调用之前。而且,如果存在函数原型,则形参的默认值应在函数原型中指定;否则在函数定义中指定。另外,若函数原型中已给出了形参的默认值,则在函数定义中不得重复指定,即使所指定的默认值完全相同也不行。

4.在同一个作用域,一旦定义了默认形参值,就不能再定义它。

5.如果几个函数说明出现在不同的作用域内,则允许分别为它们提供不同的默认形参值。

6.对形参默认值的指定可以是初始化表达式,甚至可以包含函数调用。

eg:int f(int a, float b=5.0, char c='c', int d=sub(20,15));

7. 在函数原型给出了形参的默认值时,形参名可以省略。

eg:int f(int, float=5.0, char='c', int=sub(20,15));


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部