【问题标题】:Why can't I declare a variable or function more than once with different types?为什么我不能多次声明不同类型的变量或函数?
【发布时间】:2020-05-31 19:43:33
【问题描述】:

好的,我知道“一个定义规则”,但是当我尝试随后在源代码中声明具有不同类型的变量时,我遇到了如下错误:

int fkc();
void fkc();

enter image description here

我的意思是这两个语句只是两个声明,而不是定义。好的,每个声明都必须只有一个唯一的定义吗?

【问题讨论】:

  • 1.这些是函数声明 2. 这里有什么不清楚的地方?编译器应该如何确定你想引用哪两个?

标签: forward-declaration multiple-definition-error using-declaration


【解决方案1】:

在 C++ 中,不能基于返回类型重载函数。

重载解析会考虑函数名、cv-qualifiers、参数数量及其类型。

你可以这样做:

auto fck()
{
    if constexpr(...) return my_int;
    else /* do smth without return */
}

但这当然不是函数重载。

【讨论】:

    【解决方案2】:

    因为你不能仅仅通过改变返回类型来重载方法。这个不允许。编译器根据签名来区分函数调用。函数的签名只包括函数名和参数如

    func(int x....) 不包含返回类型

    【讨论】:

      猜你喜欢
      • 2014-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-23
      • 2021-06-11
      • 1970-01-01
      • 1970-01-01
      • 2016-04-23
      相关资源
      最近更新 更多