【发布时间】:2012-05-29 09:00:59
【问题描述】:
我在 Bruce Eckel 的 Thinking in C++ 中读到,当 C++ 编译器遇到一个函数时,它会使用它的名称和参数来装饰它的名称。 对于一个函数,int func(char ch);它会把它的名字装饰成 _func_char 它不使用返回类型。
在这种情况下, 在下面的程序中,当编译器在函数名修饰期间没有存储返回类型时,它如何抱怨“从 int 到 const char* 的无效转换”?谁能解释一下?
#include <iostream>
using namespace std;
int func()
{
int i = 5;
return i;
}
int main()
{
string str = func();
}
【问题讨论】:
-
名称修改只是为了链接 - 编译器仍然知道它需要知道的关于编译单元中的函数的一切。
-
两个函数不能存在相同的参数但不同的返回类型,因此没有必要修改返回类型。
标签: c++