C++の集成体ってカオス!!
こんにちは、めのんです!
平日はPHPの勉強を主にしているんですけど、休日は別のこともやっています。 そのうちのひとつがC++の勉強です。 というわけで、今回はC++の話題を取り上げてみようと思います。
私は以前からCは結構やっているので、C++を勉強するにあたってはCとの差分に重点を置いて進めています。 Cとの差分となると、やっぱりクラスですよね!
C++のクラスについて調べてみて最初に思ったのは、「クラス定義の末尾にセミコロンがいるんだ!」ということです。 式や宣言の最後にセミコロンを付けるほかの言語、たとえばC#やJavaやPHPなどではクラス定義の末尾にセミコロンを付けないのが普通です。 最初ちょっと違和感があったんですけど、すぐに納得しました。
C++のクラスって、構造体を拡張したものなんですね!
構造体なら末尾にセミコロンが必要なのは当然です。 そこからもう一歩踏み込んで、構造体も共用体もクラスの一種なんだということがわかりました。
Cでは、構造体と共用体は見た目こそ似ていますがまったくの別物です。 それに、Cの集成体は配列と構造体をひっくるめた概念で、共用体は集成体ではありません。
ところが、C++の集成体は似て非なる概念なのにも驚きました。 もっと驚いたのは、C++の集成体の定義というか要件が、最近は3年ごとにコロコロ変わっているということです!
C++って、Cと同じ用語を使ってても全然違う概念だったりすることが結構あるんですか? いっそ全然違う言語なら、そういうことがあってもすんなり受け入れられるんですが、なまじっかCを知ってるだけに混乱してしまいそうです。
あまり細かいことにこだわらずに、基本的な読み書きができるようになることを優先すべきなんでしょうけどねー 気になることがあるとついつい深堀してしまうんですよ。
こうやって横道にそれながらも、一歩一歩理解は深まっていると信じながら、今日も勉強します。
それでは!!