struct。
メンバのアクセス指定子がデフォルトで public であるクラス型(C++)。
C++では、構造体もクラスの一種であり、データメンバだけでなくメンバ関数、コンストラクタ(C++)、アクセス指定子なども持てる。
定義
struct Employee
{
int id {};
int age {};
double wage {};
};各メンバには、デフォルトメンバ初期化子を書いて初期値を設定できる。
オブジェクトの作成
Employee e1 {};
Employee e2 { 1, 32, 60000.0 };構造体が集成体である場合は、{} を使って各メンバを順番に初期化できる。
メンバアクセス
オブジェクトのメンバには . でアクセスする。
Employee e {};
e.id = 14;例
#include <iostream>
struct Employee
{
int id {};
int age {};
double wage {};
};
int main()
{
Employee joe { 14, 32, 60000.0 };
Employee frank { 15, 28, 45000.0 };
int totalAge { joe.age + frank.age };
std::cout << "Joe and Frank have lived " << totalAge << " total years\n";
if (joe.wage > frank.wage)
std::cout << "Joe makes more than Frank\n";
else if (joe.wage < frank.wage)
std::cout << "Joe makes less than Frank\n";
else
std::cout << "Joe and Frank make the same amount\n";
}補足
- 単純なデータの集まりを表すときに
structがよく使われる - 振る舞いを強く隠蔽したい設計では
classが選ばれることが多い - ただし、これは主に慣習の違いであり、機能差は小さい
classとの違いの詳細は クラスと構造体の違い(C++) を参照