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


In C++, what is the difference between a method and a function

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
What is the difference between a method and a function

我正在努力纠正我的术语。

一个方法和一个函数在C++方面的区别是什么?

方法是否不返回任何内容,只对其类执行操作;而函数具有返回值?


就C++标准而言,没有所谓的"方法"。此术语用于其他OO语言(例如Java),以引用类的成员函数。

在常见用法中,您会发现大多数人或多或少会使用"方法"和"函数",尽管有些人会将"方法"的使用限制为成员函数(而不是不是不是类成员的"自由函数")。


对不起,这是我的一个小毛病。方法只是一个通用的OO类型术语。方法不存在于C++中。如果你打开C++标准,你将找不到任何提及"方法"的东西。C++具有各种各样的功能。


"方法"一词不在C++中使用,而是用于成员函数。

如果你在考虑一个过程和一个函数之间的区别,那么C++中的差异就没有了。帕斯卡几乎是最后一种做出这种区分的语言。(Ada是后来构建的,使用了术语procedure,谢谢Brian Neal。)

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

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

成员函数

  • 是一个类的成员
  • 可以是私人的
  • 可以被保护
  • 可以公开
  • 可以是虚拟的
  • 可以是纯虚拟的


方法是类的成员函数,但在C++中,它们通常比方法(称为Java的调用其他方法的程序员)更能称之为成员函数。

函数通常是指自由函数,它不是类的成员。

所以当一个成员函数是一个函数时,一个函数不一定是一个成员函数。

例子:

1
2
3
4
5
6
7
8
9
10
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

即使是方法也可以有返回值。

方法是类的函数。例如,类"car"有一个方法"accelerate"。