2011-12-21 10 views
18

可能性の重複:
What is the difference between a method and a functionは、方法と機能の違いは何である

私は私の専門用語が正しい取得しようとしています。

具体的には、C++に関して、メソッドと関数の違いは何ですか?

メソッドは何も返さず、そのクラスの操作を実行するだけですか?関数には戻り値がありますか?

+3

@Ash Burlaczenko私はそれがC++に固有のものではないので、その質問と重複しているとは思わない。 –

+0

私は同意します、これは重複していません。実際、スコープがより明確に定義されているので、これはより良い質問だと私は思っています。 – joaerl

答えて

35

C++標準に関する限り、「メソッド」はありません。この用語は、クラスのメンバ関数を参照するために他のOO言語(例えば、Java)で使用される。

一般的に、「メソッド」と「関数」は多かれ少なかれ互換性がありますが、一部の人は「メソッド」の使用をメンバー関数に制限します(「フリー関数」ではなく)クラスのメンバーではありません)。

+2

OPはC++標準に全く関係していないようです。 98のものではなく、03のものではなく、11のものでもない。彼は正しい専門用語にしか興味がありません。 –

+4

正しい用語は「メソッド」ではなく、メンバ関数です。 –

+9

@CaptainGiraffe:あなたの意見を理解しています。しかし、規格に含まれているもの以外の「正しい用語」はありません。それ以外のものは単なるアドホックです。 –

1

メソッドはクラスのメンバ関数ですが、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 
9

申し訳ありませんが、これは私のいらいらの一つです。メソッドは単なる汎用OO型の用語です。メソッドはC++では存在しません。 C++標準を開くと、 "メソッド"について何も言及しません。 C++にはさまざまな味の関数があります。

+4

適切な用語については、標準を参照してください。ヘック、Stroustrupの本を見てください。彼は常にメソッドではなくメンバ関数を呼び出します。 –

1

メソッドでも戻り値を持つことができます。

メソッドは、クラスの関数です。たとえば、クラス "car"には "accelerate"メソッドがあります。

+0

C++ではこの区別はありません。 –

0

「メソッド」という用語は、C++では使用されていませんが、メンバ関数です。

手順と機能の違いについて考えているなら、C++の違いはありません。パスカルは、その区別をするための最後の言語でした。 (ADAは後で構築され、プロシージャという用語を使用しました.Brian Nealに感謝します)

voidと宣言された機能は、古いボキャブラリのプロシージャになります。

メンバ関数は複雑な獣であり、関数は単純な関数です。

メンバ関数

  • がプライベートであることができるクラスのメンバーである
  • 保護することができる
  • できる仮想ことができる非公開とすることができます純粋な仮想である
+3

C++ではこの区別はありません。 –

+0

@Oliどのような区別? –

+0

"メソッド"と "関数"の間。 –

関連する問題