抽象データ型をC言語で記述する場合、これらのデータ型に対してアクションを実行するための関数は、関数,などのインターフェイスで公開されていますか?私はどこでも建設的な答えを見つけることができないようです。 メソッドはC++固有の用語ですか?関数またはメソッド?
答えて
メソッドはC++固有の用語ですか?
"メソッド"はオブジェクト指向プログラミング用語であり、オブジェクトの名前空間の一部である関数を参照します。したがって、C++、Java、Objective-Cなどの言語でオブジェクトのメソッドを作成することができます。一方、Cでは、メソッドではなく、スタンドアロンの関数があります。
クラスメソッドの「公式」C++用語は「メンバ関数」であり、仕様の9.3節で説明されています。
メソッドは、通常、OOPのクラスの一部である「関数」を記述するために使用されます。関数はまさにそれです - 関数、クラスの一部ではありません。
.hファイルでは、 "関数宣言"と呼ばれ、.cでは "関数実装"と呼ばれています...私は専門家ではなく、ちょうど.02です。
メソッドは、クラスに関連付けられた関数です。
クラスはCに存在しないため、すべて技術的に機能します。
私はこれを作るために特に便利な区別はないと思いますが、一般的に、あなたはCが提供していないことをOOPのものの全体の束を意味単語方法ので機能それらを呼び出すと思います。 the following様:
方法は、実行時に、それらが関連付けられているクラス(またはクラスインスタンスまたはクラス オブジェクトまたはオブジェクト)のインスタンスに格納されている データへのアクセスを有し、それによって可能である特別な特性を有します には、インスタンスの状態を制御します。
しかし、私は日常のJavaで育った人々がような方法 C 関数を参照して、私は一度、彼らが何を意味するのかについて混乱していたことがありません聞きました。少しでも。
あなたは、しかし、以下の(緩い)の区別をしたいかもしれません:
手順は機能が手順です何か
を行うコードのブロックです1つまたは複数の入力を出力に関連付けるもの
メソッドは、そのクラスのあるクラスまたはインスタンスに属するプロシージャです。
厳密に言えば、関数は与えられた入力に対して出力を与える演算です。一方、メソッドは型にバインドされた関数です。 Cは機能を持っているだけで、私はあなたとは違うとは思わない。
しかし、ADTを実装する場合、たとえば、関数ポインタを構造体に配置すると(関数へのコンテキストポインタをstructインスタンスに渡す)、メソッドでオブジェクトを模倣しているように見えますそれらを「関数として実装されたメソッド」と呼ぶ理由はありません。
私はいつも "メソッド"を "メンバー関数"の同義語として使用しています。これはC++にはそのようなことがないので、C++を意味します。コインの反対側に
しかし、1は内foo_alter_state
の役割と主張するかもしれません:自立いえ
struct foo {
// implementation stuff;
};
void foo_alter_state(struct foo *self);
は、まだfoo
の上で動作方法でした。基本的にはCのOOPですが、手作業で実装されています。
このパースペクティブは、struct foo;
がヘッダーでのみ宣言されていて、どこにでも公的に定義されていない場合に特に当てはまる可能性があります。
合意しました。それで、私は、この区別についてあまり真剣に考えるのはあまり有用ではないと言います。 –
- 1. get()メソッドまたは関数
- 2. メソッドはウォッチャーコールバック関数の関数ではありません
- 3. 関数またはメソッドを使った代入
- 4. スカラーマップでは、フィルター、ゴーリーは関数またはメソッドです
- 5. 要素のプロトタイプ例外(関数またはメソッドではない)
- 6. マップ機能は、未解決の関数またはメソッド(マップ)
- 7. メソッド(関数)
- 8. インライン関数/メソッド
- 9. Matlab Engineのコマンドウィンドウの "未定義の関数またはメソッド"
- 10. Passport.JSで未解決の関数またはメソッド
- 11. WooCommerce $ product-> get_price_htmlメソッドまたは関数の場所?
- 12. 非ネットdllの関数またはメソッドにアクセスする
- 13. 閉鎖時のクラスまたは関数のメソッドの使用
- 14. pipe()の未解決の関数またはメソッド
- 15. Angular2 Observable.forkJoinアップグレード後の未解決の関数またはメソッド
- 16. Javascriptオブジェクト:属性内の関数またはメソッド
- 17. 未解決の関数またはメソッドに行わ()
- 18. AngularFire/Firebase - AuthGuard未解決の関数またはメソッドmap()
- 19. 未解決の関数またはメソッドJavaScript yii2
- 20. 反応メソッドは関数ではありません。関数は関数ではありません
- 21. 文字列変数に関数または変数メソッドを追加する
- 22. オーバーロードされたメソッドの汎用関数
- 23. 関数宣言または関数式
- 24. 関数名または関数ポインタ?
- 25. ペナルティ関数のメソッド
- 26. DoDragDrop関数メソッドが
- 27. ビルトイン関数/メソッドvs独自の関数/メソッド?
- 28. 関数またはメソッドはいつ実行を停止しますか?
- 29. TypeScriptではメソッドまたは関数をdev-onlyとしてマークしますか?
- 30. メソッドをプロパティまたは関数として呼び出しますか?
メソッド/関数を交換する人とCを「貧しい人のJava」と見なす人の間には強い相関関係があることが分かりましたが、興味深い議論のポイントを作ることができます。 – Flexo