Forward declaration 为什么可以';我不能用不同的类型多次声明变量或函数吗?
好的,我知道“一个定义规则”,但当我试图在源代码中声明一个具有不同类型的变量时,我遇到了如下错误:Forward declaration 为什么可以';我不能用不同的类型多次声明变量或函数吗?,forward-declaration,multiple-definition-error,using-declaration,Forward Declaration,Multiple Definition Error,Using Declaration,好的,我知道“一个定义规则”,但当我试图在源代码中声明一个具有不同类型的变量时,我遇到了如下错误: int fkc(); void fkc(); 我的意思是这两个语句只是两个声明,而不是定义。好的,每个声明都必须只有一个唯一的定义吗?因为您不能仅仅通过更改返回类型来重载方法。这是不允许的。编译器根据签名来区分函数调用。函数的签名只包括函数名和类似的字符串 < C++ >代码> FUNC(int x…),它不包含C++中的返回类型,不能基于返回类型重载函数。 重载解析会考虑函数名、cv限定符、
int fkc();
void fkc();
我的意思是这两个语句只是两个声明,而不是定义。好的,每个声明都必须只有一个唯一的定义吗?因为您不能仅仅通过更改返回类型来重载方法。这是不允许的。编译器根据签名来区分函数调用。函数的签名只包括函数名和类似的字符串
< C++ >代码> FUNC(int x…)<代码>,它不包含C++中的返回类型,不能基于返回类型重载函数。 重载解析会考虑函数名、cv限定符、参数数量及其类型 你可以这样做:
auto fck()
{
if constexpr(...) return my_int;
else /* do smth without return */
}
但这当然不是函数重载。1。这些是函数声明2。这里有什么不清楚的?编译器应该如何确定您要引用的2中的哪一个?