当前位置:  开发笔记 > 编程语言 > 正文

函数调用的结果可以用作默认参数值吗?

如何解决《函数调用的结果可以用作默认参数值吗?》经验,为你挑选了4个好方法。

是否有一个很好的方法来编写带有函数调用的默认参数的C/C++函数头?

我有一些功能的标题:

int foo(int x, int y = 0);

我在一个大型代码库中工作,其中许多函数调用此函数并依赖于此默认值.此默认值现在需要更改为动态的东西,我正在寻找一种方法:

int foo(int x, int y = bar());

其中bar()是一些根据某些系统参数生成默认值的函数.或者,这个函数原型看起来像:

int foo(int x, int y = baz.bar());

其中baz是属于未在头文件中实例化的对象的函数.



1> Dima..:

去搞清楚!它确实有效.C++函数中的默认参数



2> 小智..:

我会使用两个重载函数:

int foo(int x, int y);

int foo(int x){return foo(x,bar);}

如果允许内联转发功能,则性能损失可能小到零.如果你在非头文件中保持它的主体不在线,可能会有性能成本(可能很小),但实现的灵活性更高,耦合也更少.



3> Lev..:

是.你写的是什么.



4> user21714..:

简单地删除第一个声明中的可选参数并提供单个参数重载有什么问题?

int foo(int x)
{
    Bar bar = //whatever initialization
    return foo(x,bar.baz());
}

int foo(int x,int y)
{
  //whatever the implementation is right now
}

我认为这比尝试使用一些动态默认值更清晰,更灵活.

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有