teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

誤字の修正

2019/08/24 02:11

投稿

raccy
raccy

スコア21768

answer CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Cの構造体(structure)や共用体(union)を構成する内容の要素をメンバー(member)といいます。memberという英語の意味はある物を構成する「一員」や「一部」のことを表しますので、構造体の一員(一部)としてmemberという言葉が割り当てられたと思われます。他にも構造体でメンバーにアクセスするのに使用する`.`はメンバーアクセス演算子(member access operator)と言ったりします。
4
4
 
5
- C++はCの拡張です。C++でのクラス(class)はCの構造体(structure)をそのまま拡張したものになっています。言ってみれば、C++上ではクラスと構造体に区別はありません(`class`と`struct`はデフォルトのアクセス権が異なる以外は違いがありません)。つまり、Cでメンバーであった物もC++でもメンバーでなければ、Cを拡張していると言うにはおかしなことになるということです。しかし、C++は通常の変数以外にもstatic修飾された変数や関数もメンバーとして登録できます。それらを区別する意味でも、通常の変数は「メンバー変数(英語では単にmember)」、static修飾されたものは「静的メンバー変数(英語では単にstatic member)」、関数であるものは「メンバー関数(member function)」と呼んでいます。コンストラクターやデストラクター他のメンバーと同じに書きますがメンバーではありません。
5
+ C++はCの拡張です。C++でのクラス(class)はCの構造体(structure)をそのまま拡張したものになっています。言ってみれば、C++上ではクラスと構造体に区別はありません(`class`と`struct`はデフォルトのアクセス権が異なる以外は違いがありません)。つまり、Cでメンバーであった物もC++でもメンバーでなければ、Cを拡張していると言うにはおかしなことになるということです。しかし、C++は通常の変数以外にもstatic修飾された変数や関数もメンバーとして登録できます。それらを区別する意味でも、通常の変数は「メンバー変数(英語では単にmember)」、static修飾されたものは「静的メンバー変数(英語では単にstatic member)」、関数であるものは「メンバー関数(member function)」と呼んでいます。コンストラクターやデストラクター他のメンバーと同じに書きますがメンバーではありません。
6
6
 
7
7
  これらは**C++だけ**の話です。C/C++に強く影響を受けすぎているDのような一部の例外を除けば、私の知る限り、ほとんどのオブジェクト指向言語では、メンバー変数やメンバー関数という言い方は公式のドキュメントにはありません。もう一つのオブジェクト指向言語であるSmalltalk由来の呼び方やCとは切り離された呼び方をしています。なぜなら、それはもはやCの構造体では無いからです。(Cの構造体のような機能が無いというわけでは無く、クラスが(内部構造は別として)構造体の単なる拡張では無いということです。)
8
8