相关疑难解决方法(0)

返回类型是函数签名的一部分吗?

在C++中,返回类型是否被认为是函数签名的一部分?只修改了返回类型,不允许重载.

c++ function

66
推荐指数
2
解决办法
4万
查看次数

使用非const指针调用函数会通过指向const的指针函数转换为模板函数

以下代码是在g ++ 4.1.2和g ++ 4.4.4上编译的.两者都给出了评论中指出的结果.

int f(const int * a)
{
   return 0;
}

template<typename A>
int f(A a)
{
   return 1;
}

int main()
{
    int x;
    // return f(&x); // returns 1
    return f((const int *)&x); // returns 0
}
Run Code Online (Sandbox Code Playgroud)

它似乎归结为做出f(int *)决议f<int *>(int *)而不是预期的召唤f(const int *).我发现这令人震惊,完全不直观.

这是g ++中的一个错误,是C++的一个黑暗角落,还是由于某种原因我很遗憾?如果它不是一个错误,它背后的理论或逻辑是什么?有关此问题的安全措施吗?

c++

7
推荐指数
2
解决办法
182
查看次数

标签 统计

c++ ×2

function ×1