盡管標準的C通常在C和C++中的功能相同,但是一些函數在每個語言中有不同的符號差。標準的函數他們的符號差不同的是:strchr(), strpbrk(), strrchr(), strstr(), 和 memchr(),字符副本也和它們一樣:wcschr(), wcspbrk(), wcsrchr(), wcsstr(), wmemchr()。它們中所有的標準頭文件〈cstring〉和〈string.h〉都被定義。這些差異可以被忽略,但是在在移植C代碼到C++編譯器時候非常重要。 下面我們來看看strstr(),在C中,這個函數是下面的原型: char * strstr(const char*s1, const char *s2); 在C++中,這個函數有兩個不同的原型,它們中的任何一個在C中的版本都不一樣。 char * strstr(char *s1, const char * s2); 下面讓我們在看另外一個例子:strpbrk()。在C中,它的形式是這個樣子: char * strpbrk(const char *s1, const char *s2); 在C++中,它有兩個不同的符號差: char * strpbrk(char *s1, const char *s2); 現在你看到了一個模式了吧?當這些函數其中一個的C版本作為一個參數獲得“const X”并返回"X *"的時候,C++定義的兩個版本:一個獲得"X *"并返回"X *"另外一個獲得“const X”并返回"X *"。C++的用戶使用重載來提高類型的安全性。 |
溫馨提示:喜歡本站的話,請收藏一下本站!