プロが教えるわが家の防犯対策術!

初歩的な質問なのですが、
関数とメソッドの違いが分からず悩んでいます。
書籍や人によって、
関数とメソッドは同じ物として書いている物もあれば、
メソッドはクラスに関連付いた関数としていたり、
クラスでもpublic関数だけとか、
引数のある物がメソッド、
逆に無い物がメソッド等々…で、
どれが正しいのか良く分からないのです。

関数とメソッドの違いを教えていただけますよう、
お願いいたします。

A 回答 (14件中1~10件)

普通メソッドとは


クラスのメンバ関数の事を指します。

class A{
void Fnc();//class Aのメソッド あるいはメンバ関数
};

// ただの関数 少なくともこれをメソッドとは言わない
void Fnd(){
}
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます。
私としてはクラスのメンバ関数がメソッドの事で、
メンバ関数と言う言い回しは、C/C++の方言だと考えていたのですが、
改めて調べ直すと、他の方々のご返答のように、
人によってまちまちなので、何が正しいのか確信がもてなくなりました。
多くの方々から、ご返答を頂けましてありがたいのですが、
結局のところ、どなたのご意見が正しいのでしょうか。

お礼日時:2005/04/12 09:38

まず、ここが一番大事なのですが、CやC++には「メソッド」というものはありません。

C++にあるのは「メンバ関数」であってメソッドではありません。
これに対して、C#やObjective-Cには「メソッド」が存在します。

C/C++において「メソッド」といっているのは、他の言語からの類推または混同によるもので、関数のことを「サブルーチン」というのと大差ありません。
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます。
私としてはクラスのメンバ関数がメソッドの事で、
メンバ関数と言う言い回しは、C/C++の方言だと考えていたのですが、
改めて調べ直すと、他の方々のご返答のように、
人によってまちまちなので、何が正しいのか確信がもてなくなりました。
多くの方々から、ご返答を頂けましてありがたいのですが、
結局のところ、どなたのご意見が正しいのでしょうか。

お礼日時:2005/04/12 09:38

聞くより、そのままの言葉で調べた方が楽だったり...


http://www.google.co.jp/search?hl=ja&q=%E9%96%A2 …
    • good
    • 0

#2> CやC++には「メソッド」というものはありません。

C++にあるのは「メンバ関数」であってメソッドではありません。

? では メソッド と メンバ関数 の違いは?

クラスに束縛された関数を Java/C#ではメソッド、C++ではメンバ関数 と呼んでいる だけのことでは?
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます。
私としてはクラスのメンバ関数がメソッドの事で、
メンバ関数と言う言い回しは、C/C++の方言だと考えていたのですが、
改めて調べ直すと、他の方々のご返答のように、
人によってまちまちなので、何が正しいのか確信がもてなくなりました。
多くの方々から、ご返答を頂けましてありがたいのですが、
結局のところ、どなたのご意見が正しいのでしょうか。

お礼日時:2005/04/12 09:39

> ? では メソッド と メンバ関数 の違いは?



C/C++では、メソッドは言語仕様にないので一般的な解釈をせざるを得ないと思います。

「標準出力というオブジェクトに、putsというメッセージを送ると、文字列が出力されるというメソッドが実行される」といった具合に、メンバ関数とは直結しません。
もっと極端な例では、「タイマというオブジェクトに、レジスタへの書き込みというメッセージを送ることで、カウントアップ開始というメソッドが(ハード的に)実行される」というのもあるでしょう。

メンバ関数はメソッドを実現する上で便利な機能ではありますが、メンバ関数を使えばメソッドになるわけでもなければ、メソッドはメンバ関数でしか実現できないものではないと思いますが、いかがでしょう?
    • good
    • 0

#5> 「標準出力というオブジェクトに、putsというメッセージを送ると、文字列が出力されるというメソッドが実行される」といった具合に、メンバ関数とは直結しません。



なるほど、「オブジェクトに送られたメッセージに対する反応」がメソッドで、その実現手段の一つがメンバ関数だと(それでいいですか?)。

だとすると、C#におけるメソッドはどうなんでしょう。ただのメンバ関数をメソッドと'称している'に過ぎないように思えますが。
    • good
    • 0

色々な回答があり情報が錯綜していますが。

。。「関数=メソッド」と考えていいと思います。

まずC++の言語仕様には「メソッド」はないと思います(私自身仕様を把握しているわけではないので自信はありません、ないと思います)。

そのためC++(の仕様)において「メソッドと関数の違いは?」という質問への正確な回答はないと思います。

とは言うもののC++に関しても様々な場面で「メソッド」という言葉が使われています。

Visual C++で「メソッド」という言葉が使われている場面もあります。COM(ActiveX)で外部から操作できる関数を「メソッド」と呼びます(同じように外部から参照や操作できる変数は"プロパティ"と呼びます)。これはマイクロソフトなどが使っているC++での「メソッド」という言葉です。

またC++以外の言語を使っていて新しくC++を始めた人などは「メソッド=関数」という意味合いで使っていることもあります。また「クラスのメンバー関数=メソッド」として扱っている人もいます。これらは多くの場合上で述べたマイクロソフトの"メソッド"という言葉とは違う意味で使っています。


つまり「メソッド」という言葉はきちんとした定義がない(?)ためにその言葉を使っている人によって意味合いが違っています。「メソッド」という言葉に出会ったらその時々でその意味を判断する必要があると思います。しかしどの場合にも"メソッド"が"関数"の1種であることには変わりはないので「メソッド=関数」と考えていいと思います。
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます。
私としてはクラスのメンバ関数がメソッドの事で、
メンバ関数と言う言い回しは、C/C++の方言だと考えていたのですが、
改めて調べ直すと、他の方々のご返答のように、
人によってまちまちなので、何が正しいのか確信がもてなくなりました。
多くの方々から、ご返答を頂けましてありがたいのですが、
結局のところ、どなたのご意見が正しいのでしょうか。

お礼日時:2005/04/12 09:40

> だとすると、C#におけるメソッドはどうなんでしょう。

ただのメンバ関数をメソッドと'称している'に過ぎないように思えますが。

これはその通りだと思います。

C++の「オブジェクト」というのも、オブジェクト指向でいうところの「オブジェクト」と必ずしも等価でないのと同様、C#における「メソッド」もその言語内のローカルな定義に過ぎないのでしょう。
    • good
    • 0

> 結局のところ、どなたのご意見が正しいのでしょうか。



元々メソッド(method)というコトバはSmalltalkで用いられたものではなかったかしら。
意味は「オブジェクトに送られたメッセージに対する反応」 であったはず。
だとすればメソッドはオブジェクト(レシーバ)を必要とするわけで(クラス・メソッドは例外)、そうでないものは関数と呼んで差し支えないのでは。

そんなわけで #1 が常識的なとこではないかと。
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます。
皆様方のご意見とても為になりました。

お礼日時:2005/04/18 10:05

> 元々メソッド(method)というコトバはSmalltalkで用いられたものではなかったかしら。



歴史的経緯はどうであれ、SmalltalkでもJavaでもC#でも、そこで使われている「メソッド」はC/C++から見れば他言語の概念に過ぎません。

#7 の回答のように、その言葉を使っている人と、今自分が扱っているものから判断するしかないと思います。

実際、FA機器を扱ったりしていると、顧客が使う「メソッド」は生産手法のことだったりするわけで、そこで開発するアプリケーションでもやはり「メソッド=生産手法」になるわけです。
というわけで、C/C++とは直接関係のない用語の定義を一意に定めることはできないと思います。
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます。
皆様方のご意見とても為になりました。

お礼日時:2005/04/18 10:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!