我在C++的Thinking in C++中閱讀了Bruce Eckel,當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();
}
http://en.wikipedia.org/wiki/Name_mangling#Name_mangling_in_C.2B.2B – v01d
名稱修改僅用於*鏈接* - 編譯器仍然知道它需要了解編譯單元中函數的所有信息。 –
兩個函數不能以相同的參數存在,但返回類型不同,因此不需要在返回類型中進行分解。 – Pubby