在C++中,方法和函数之间有什么区别

Wes*_*Wes 34 c++ terminology

可能重复:
方法和函数之间有什么区别

我试图让我的术语正确.

有关C++的方法和函数有什么区别.

是一个方法什么都不返回,只是在它的类上预先形成操作; 虽然函数有返回值?

Oli*_*rth 52

就C++标准而言,没有"方法"这样的东西.该术语在其他OO语言(例如Java)中用于指代类的成员函数.

在常见的用法中,你会发现大多数人会或多或少地交替使用"方法"和"功能",尽管有些人会限制对成员函数使用"方法"(而不是"自由函数")班级成员).

  • @CaptainGiraffe:我理解你的观点.但除了标准中的内容之外,没有"正确的术语".其他任何东西都是临时的. (17认同)
  • 而正确的术语不是"方法",而是成员函数. (8认同)

Bri*_*eal 16

对不起,但这是我的一个小小的烦恼.方法只是一个通用的OO类型的术语.C++中不存在方法.如果您打开C++标准,您将找不到任何"方法".C++具有各种风格的功能.

  • 对于正确的术语,我们期待标准.哎呀,甚至看看Stroustrup的书.他总是把它们称为成员函数,而不是方法. (6认同)

Set*_*gie 5

方法是类的成员函数,但在 C++ 中,它们更常被称为成员函数而不是方法(一些来自其他语言(如 Java)的程序员将它们称为方法)。

函数通常意味着一个自由函数,它不是类的成员。

因此,虽然成员函数是函数,但函数不一定是成员函数。

例子:

void blah() { } // function

class A {
    void blah() { } // member function (what would be a "method" in other languages)
};

blah(); // free functions (non-member functions) can be called like this

A ainst;
ainst.blah(); // member functions require an instance to invoke them on
Run Code Online (Sandbox Code Playgroud)


Cap*_*ffe 5

C++ 中不使用术语“方法”,而是使用成员函数

如果您考虑过程和函数之间的区别,那么 C++ 中没有区别。Pascal 几乎是最后一种做出这种区分的语言。(ADA 是后来构建的,并使用了术语“程序”,感谢 Brian Neal。)

任何函数,无论是否是成员,只要声明为 void,都将是旧词汇中的过程。

成员函数是一个复杂的野兽,函数是一个简单的函数。

成员函数

  • 是班级的成员
  • 可以是私有的
  • 可以被保护
  • 可以公开
  • 可以是虚拟的
  • 可以是纯虚拟的

  • C++ 不做这种区分。 (5认同)