術語「方法」通常用於討論C++代碼。單獨的術語在C++中有明確的含義嗎?還是不明確?單獨使用該術語還是應該是合格的(例如,「類方法」或「虛擬方法」)還是應該完全避免?C++標準定義的術語「方法」是什麼?
回答
我會完全避免這個術語,因爲它清楚你的意思是「成員函數」,而不是「方法」 - 你問這個問題是否足夠證明。
然而,在C++ 14標準中的 「方法」 一詞的規範出現的
在內容列表:
17.5 描述(信息)的方法
這在該部分的標題中重複。
[basic.compound]:
這些方法構造類型可以遞歸施加;
[cpp.include]
的方法通過該預處理標記的
<
和>
之間的序列 預處理記號對或一對"
字符被組合 成單頭名稱預處理令牌是實現定義的。[library。一般]
以下各節描述的定義(17.3),描述的方法(17.5),[..]
在表32中,
FLT_EVAL_METHOD
被提及。在
num_get
的do_get
的階段2:對於算術類型,
punct.thousands_sep()
字符插入 到序列通過使用在22.4中描述的方法通過punct.do_grouping()
返回的值來確定。 3.1.2[forwardlist.modifiers]:
否則,插入在 結束
sz - distance(begin(), end())
元素列表,使得每個新的元素,e
,由初始化相當於調用allocator_traits<allocator_type>::construct(get_allocator(), std::addressof(e), c)
的方法。[filebuf.virtuals]:
根據
basic_streambuf<charT,traits>::uflow()
的描述表現方式與該專業化字符的 序列從輸入讀取相同的方法作爲 由underflow
使用。
術語顯然是從來沒有提到「成員函數」。
這基本上覆制我的答案的一部分:*「一個簡單的谷歌搜索揭示這個術語的更多出現。 – cybermonkey
@cybermonkey:這不是一個「答案」,bub。而這一個與這個詞語毫無相似之處。你確定你評論了正確的答案嗎? –
術語方法未在C++標準中定義。該術語使用成員函數代替。然而
Bjarne的Stroustrup的定義在他自己的glossary作爲虛擬成員函數術語方法。所以這表明該術語是可以接受的證據。
很好的答案。但* virtual *成員函數與成員函數不同,更重要的是,它不是成員函數的默認值(默認情況下,它是非虛擬的)。 –
這使得它更模糊。坦率地說,當我看到非標準術語中使用的「方法」時,我總是會考慮「成員函數」。 – vsoftco
@GiulioFranco我同意。 OOp的通常定義是調用數據屬性和行爲方法。我不確定爲什麼Bjarne Stroustrup認爲它是虛擬的。他可能會引用一個隱含多態的方法定義(即與對象不相關的行爲)。 – Christophe
C++ standard沒有提到術語method
。應該指出的是official C++ FAQ確實利用這個術語,而是描述了一個virtual
函數;一個simple Google search揭示了這個術語的更多出現。
我從來沒有在IDE(Visual Studio)中看到過術語method
,但我看過術語member function
。在我看來,method
是一個'一刀切'的術語。
術語方法在歷史上被用作對象過程的同義詞。考慮到,一個對象既有數據又有行爲,這就是被稱爲方法的行爲。 跟蹤向後,我可以找到參考一個MIT ALGOL版本當術語方法的用法的參考,AED-0
MIT ALGOL版本,AED-0,鏈接數據結構( 「plexes」,用 方言)直接使用程序,預先配置後來稱爲「消息」,「方法」和「成員函數」的內容。
多年來,方法一直是面向對象分析和設計和麪向對象編程的一個組成部分。現在,C++演化爲一種過程語言,它將C語言擴展爲具有面向對象功能的過程語言。 C具有結構的概念,數據元素被稱爲成員。請參閱Methods in C++。 爲了不打破沿襲,C++繼續將結構化和新類型的元素稱爲成員。
現在,爲了區分數據和功能,而不是引入新的術語,它將此術語擴展爲調用數據成員和成員函數。支持動態綁定的成員函數被稱爲虛函數。
因此,嚴格地說,官方引用在引用成員函數時不會使用術語方法。術語在擁有更多面向對象背景的人羣中最爲流行。所以,如果你想保持明確的,它是最好用的術語作爲
- 數據成員
- 成員函數
- 虛函數
請使用引號格式來說明這是多少這是你自己的話,其中有多少是由別人寫的。 –
@LightningRacisinObrit:請詳細說明哪一部分不清楚?我已根據需要適當引用。 Downvoter:你能幫我理解哪一部分沒有幫助或不正確嗎? – Abhijit
是什麼讓你認爲downvotes是「異想天開」或「沒有任何合適的理由」? –
這裏我分析關於字方法。
我對幾種編程語言的官方文檔(標準,規範等)進行了掃描。
http://componentsprogramming.com/using-the-right-terms-method/
充足的分類(不依賴於任何編程語言)將刊登在以後的文章。
關於C++,正確的術語是:成員/非成員函數。 有些人使用會員/免費功能。
- 1. Play 2.5 Scala定義表單的標準方法是什麼?
- 2. C++中術語「詞法」是指什麼?
- 3. 如何解釋C++標準文檔中的「術語和定義」?
- 4. C++什麼是定義遞歸構造函數的標準方法?
- 5. 術語「語義」是什麼意思?
- 6. 標準定義了什麼類型的雙關/指針魔術?
- 7. 類型的(官方)術語是什麼?
- 8. C中printf的標準定義是什麼?
- 9. 「聲明方法」的語義是什麼?
- 10. 定義方法時,Objective-C中的語法有什麼問題?
- 11. 什麼是WordPress的術語
- 12. C#中術語「模擬」的含義是什麼?
- 13. laymans術語中的HTML5 aria- *屬性的定義是什麼?
- 14. 確定主鍵號碼的標準方法是什麼?
- 15. 定義中結構成員初始化的術語是什麼?
- 16. Ray定義中的術語't'是什麼?光線追蹤
- 17. 什麼是C#的語法@
- 18. 在Objective C中編寫方法聲明的標準方法是什麼?
- 19. Objective-C方法定義中分號的意義是什麼?
- 20. 什麼是Z3術語
- 21. 什麼是錯的方法定義
- 22. C中這個奇怪的函數定義語法是什麼?
- 23. 遠離平均值的「標準偏差數量」的正確術語是什麼?
- 24. 什麼是C語言的標準輸入?
- 25. C語言中的「標準輸入」是什麼意思?
- 26. pthreads的官方標準是什麼?
- 27. DOM或DOT?什麼是更準確的術語?
- 28. 軟件開發中是否存在alpha,beta和RC1術語的標準定義?
- 29. 用於描述編程語言語法的術語是什麼?
- 30. 我剛開始學習html。術語'預定義標籤'是什麼意思?
該規範使用像'功能','成員函數','虛函數',而不是方法。 – Nawaz