术语"方法"通常用于讨论C ++代码。独立术语在C ++中是否具有明确定义的含义,或者它是否含糊不清?单独使用该术语是否可以接受,或者它是否合格(例如"类方法"或"虚拟方法"),还是应该完全避免它?
答案 0 :(得分:14)
术语 方法 未在C ++标准中定义。该术语使用 成员函数 。
然而,Bjarne Stroustrup在他自己的glossary中将术语方法定义为虚拟成员函数。因此,这表明该术语是可接受的证据。答案 1 :(得分:5)
我会完全避免使用这个术语,因为很清楚你的意思是"成员函数",而不是"方法" - 你问这个问题就足够了。
但是,#34;方法"这个词的规范性出现;在C ++ 14标准中
在内容列表中:
17.5 描述方法(资料性)
在该部分的标题中重复这一点。
[basic.compound]:
构造类型的这些方法可以递归应用;
[cpp.include]
序列的方法
<
和>
预处理令牌对或一对"
字符之间的预处理令牌的组合 单个头名称预处理令牌是实现定义的。
[library.general]
以下子条款描述了定义(17.3),描述方法(17.5),[..]
在表32中,提到了FLT_EVAL_METHOD
。
在num_get
do_get
的第2阶段:
对于算术类型,插入
中描述的方法punct.thousands_sep()
个字符 进入由返回的值确定的序列punct.do_grouping()
使用22.4.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()
,专业化a 使用相同的方法从输入中读取字符序列 由underflow
使用。
该术语显然从未提及&#34;成员函数&#34;。
答案 2 :(得分:1)
C++ standard未提及术语method
。应该注意的是official C++ FAQ 确实使用了这个术语,但描述了virtual
函数; simple Google search显示更多此词的出现。
我从未在IDE(Visual Studio)中看到过method
这个词,但我看过member function
这个词。在我看来,method
是一个适合所有人的尺寸。术语
答案 3 :(得分:1)
术语方法历来被用作对象过程的同义词。考虑到,一个对象同时具有数据和行为,这种行为被称为方法。 向后追溯,我可以在引用MIT ALGOL版本时找到对术语方法用法的引用,AED-0
MIT ALGOL版本,AED-0,链接数据结构(&#34; plex&#34;,在那里 方言)直接用程序,预先设置后来被称为 &#34;消息&#34;,&#34;方法&#34;,&#34;成员函数&#34;。
多年来,方法一直是面向对象分析和设计以及面向对象编程的重要组成部分。现在,C ++演变为一种过程语言,它将C语言扩展为具有面向对象的能力。 C具有结构概念,数据元素称为成员。请参阅Methods in C++。 为了不破坏血统,C ++继续将结构化和新类型的元素称为成员。
现在,为了区分数据和功能,它不是引入新的术语,而是将这个术语扩展到调用数据成员和成员函数。支持动态绑定的成员函数称为虚函数。
因此,严格来说,官方引用在引用成员函数时不会使用术语方法。术语在具有更多面向对象背景的人中最为普遍。因此,如果您想保持明确,最好将术语用作
答案 4 :(得分:1)
这是我对 方法 这个词的分析。
我对几种编程语言的官方文档(标准,规范等)进行了扫描。
http://componentsprogramming.com/using-the-right-terms-method/
适当的分类(不依赖于任何编程语言)将在以后的文章中发布。
关于C ++,正确的术语是:成员/非成员函数。 有些人使用会员/免费功能。