在成員函數聲明中指定C
是什麼意思?爲什麼在聲明成員函數時指定類名?
回答
你不應該這樣做。許多現代編譯器會將其視爲語法錯誤,例如,g ++ 4.2.1將會!
沒有意義,也沒有必要這樣做。由於Test
的聲明在C
聲明的範圍內,編譯器知道函數Test
是C
的成員。
定義方法時之類的外部這只是neccessary:
class C : public B
{
public:
void Test();
};
void C::Test() { ... }
但是,在你的例子似乎暗示的類定義中聲明它*時。 – 2011-05-09 21:24:05
你是什麼意思(可能你指的是一個錯誤的帖子,我在發帖後不久編輯,實際上是從問題中複製粘貼並忘記刪除錯誤)。 – 2011-05-09 21:37:24
是的,我提到了早期版本。現在看起來很好。 – 2011-05-09 22:21:47
不僅沒有一點上,它是非法的透頂(見8.3/1中的語言標準)。通常,在C++語言限定名是當你指的是先前聲明實體唯一允許的,但不是當您將引入一個新的實體(也有從這個規則有些例外,但他們都不在這裏適用)。
由於您的成員函數聲明無效,因此您發佈的代碼需要來自任何符合規範的編譯器的診斷消息。
- 1. C++成員函數指針,聲明
- 2. 將指針聲明爲類成員C++
- 3. 聲明前向聲明的類的成員函數爲朋友
- 4. 類成員函數的聲明無疑
- 5. 聲明和定義類成員函數內的函數對象
- 6. 在非成員函數聲明的開頭有什麼影響?
- 7. 爲什麼使用聲明沒有公開成員指針
- 8. 沒有在類中聲明成員函數 - 編譯出錯時
- 9. 聲明類的成員函數作爲模板類
- 10. 函數指針聲明 - __P做什麼?
- 11. 在運行時聲明類成員D
- 12. 聲明在C++中的成員函數
- 13. 什麼時候需要將類數據成員聲明爲公共?
- 14. 將接口聲明爲類成員有什麼用處?
- 15. 在類聲明之前調用一個類的成員函數
- 16. 聲明模板類中的結構,未定義成員函數
- 17. 如何在編譯時聲明一個函數是特定類的成員
- 18. 在其聲明中帶有指針的函數。爲什麼?
- 19. 爲什麼括號在函數指針聲明中很重要?
- 20. 我可以在聲明成員時指定接口嗎?
- 21. 聲明指針的可變參數模板成員函數
- 22. 類成員函數指針
- 23. 作爲類成員的類成員函數指針
- 24. 在對象中聲明函數名稱,爲什麼?
- 25. 爲什麼靜態成員函數只能在類定義中聲明爲靜態而不是在其自己的定義中聲明?
- 26. 什麼是winapi函數聲明約定?
- 27. 友元函數聲明爲成員函數
- 28. 關於聲明成員函數
- 29. 將對象聲明爲類成員
- 30. C++:將模板聲明爲類成員
我們之所以這樣做,是因爲它使得剪切/粘貼和定義/聲明之間的搜索更加容易。但是對於現代的IDE,沒有必要,現在它是非法的。 – 2011-05-09 21:26:49
@Martin Becket:嚴格地說,即使在C++ 98中它也是非法的。即使有一段時間它是合法的,它一定是一些標準前的時期。 – AnT 2011-05-09 23:51:13