【问题标题】:Default Arguments vs. Overloading wrt. Name Lookup?默认参数与重载 wrt。名称查询?
【发布时间】:2013-09-13 05:03:11
【问题描述】:

在 C++ 中,给出替代方案:

void fun(int arg1, int arg2opt = 0);

// vs.

void fun(int arg1, int arg2);
void fun(int arg1) {
  fun(arg1, 0);
}

想要使用这个函数的用户代码有什么不同吗?也就是说,给定任何代码库,当我将第一个定义更改为第二个定义时,哪些代码构造会中断(在编译时或运行时)? (重载解析?名称查找?fun 分配给函数指针?模板中的用法(std::function)?...)

或者这些在语义上是否相同? (我知道的here are some details 与这个问题无关)

【问题讨论】:

  • 取决于您的“用户代码”在哪里。例如:考虑当“用户”是多态派生并且这些是虚拟成员时会发生什么。
  • @WhozCraig:是的,无论如何,虚函数显然是一个很难使用默认参数的野兽。

标签: c++ overloading default-arguments


【解决方案1】:

我认为this link对start很有用,但是你命名为template,我在template有经验,如果你的程序有生产力并且没有时间学习学习模板,请停下来,学习假期中的模板。它没有任何快速参考,其错误与 OOD/P 略有不同,但如果你有时间,那就开始吧。

【讨论】:

    猜你喜欢
    • 2018-10-15
    • 2018-07-28
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-16
    • 1970-01-01
    相关资源
    最近更新 更多