10/04/02 15:00:21
すみません、考え方の整理をしたいので質問させて下さい。
自分は普段、Java と C# をメインに開発している者なのですが、趣味の範囲で C/C++ を真面目に
使いたいと思い、ここしばらくずっと勉強を続けています。
質問内容は、「C++ で言うクラス"名" は、C で言う構造体のタグ名と同じ捉え方でいいのか」 です。
具体的に言うと、C(/C++) の構造体について、現在自分はこのように捉えています。
struct { 内容 } 変数名A, 変数名B; は、その内容を構造として持った複合体のような変数として、宣言している。ちょうど、
int 変数名A, 変数名B; での、型名 int の部分が、{ 内容 } の形で表現されているような状態。
そして実際の記法としては、それが構造体の宣言である事を明示するため、struct と最初に書いてコンパイラに伝えている。
さらに、あとでこの同じ構造を再度利用したい(新しい変数を使いたい)場合に備え、
ここに一発で同じ内容を示す為の 「タグ名」 を、書くことも出来る。 そしてそれは、
struct タグ名 { 内容 } 変数名A, 変数名B; と、ある時、
struct タグ名 変数名C; のようにして簡易に使うことが出来る。
で、C++ になってからこの再度宣言する際の struct の一文は省略できるようになったので、
まるで Java や C# で言うクラス名のように見えているけど、 実はこれは元々再呼び出しの為の、タグ名だった。
そして、C++ になって今度はより仕掛けの拡張された class が登場したが、この時の
class 名前 { 内容 } 変数名;
にある "名前" の部分は、上記理解中にあるタグ名と同様に捉えておいていいんでしょうか、という事です。
よろしくお願いいたします。