C++ 無名構造体 書いて覚えるための初心者自己中記事
名前のない
クラス
構造体
列挙体
共用体
を作ることが出来る。
struct Student { char name[MAX_NAME + 1]; int scoreJapanese; int scoreMath; int scoreEnglish; }student;
構造体の宣言と構造体変数の宣言。
下に書くと変数の宣言が出来るのか。
無名にする。
struct { char name[MAX_NAME + 1]; int scoreJapanese; int scoreMath; int scoreEnglish; }student;
変数student は出来ている。
名前が無いので引数にはできない。void* を除いて。
使い道が4つあるらしい。
①メンバ関数を持てる(?? あ、クラスの場合?)
②クラスや構造体を継承出来る。アップキャストできる。
③typedefを使って
typedef struct { char name[MAX_NAME + 1]; int scoreJapanese; int scoreMath; int scoreEnglish; }Student;
こうするとStudent という型名が用意される。(??)
④共用体の中で宣言する。
union Word { unsigned short word;//2バイトのメンバ変数 struct { unsigned char low;//下位バイト unsigned char high;//上位バイト }byte;//1バイトのメンバ変数2つ }; int main() { Word n = { 0x1234 }; printf("上位バイト: %02X\n", n.byte.high); printf("下位バイト: %02X\n", n.byte.low); system("pause"); }
//output
上位バイト: 12
下位バイト: 34
すごい。共用体の中の無名構造体はひと塊として共用されるのか。
無名構造体の中ではメモリ領域の区分けがされている。
無名構造体は、名前つける必要なくね?な場合に無名にすると、
スッキリする。
ここまで。