是术语"方法"由C ++标准定义?

时间:2015-04-18 17:05:15

标签: c++ terminology language-lawyer

术语"方法"通常用于讨论C ++代码。独立术语在C ++中是否具有明确定义的含义,或者它是否含糊不清?单独使用该术语是否可以接受,或者它是否合格(例如"类方法"或"虚拟方法"),还是应该完全避免它?

5 个答案:

答案 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

Quoting wikipedia

  

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 ++,正确的术语是:成员/非成员函数。 有些人使用会员/免费功能。