クラスと構造体(関数以外)の主な違いは、クラスメンバーはデフォルトでプライベートになり、構造体メンバーはデフォルトでパブリックになることを読みました。
これは、構造体のメンバーがプライベートであることを意味します。私の質問は次のとおりです。プライベート構造のメンバーを持つことはできますか?できれば、プライベートメンバーを使用する目的は何ですか?どのようにしてそれらにアクセスしますか?
はい、構造体はプライベートメンバーを持つことができます。同じためにアクセス指定子を使用する必要があるだけです。
struct Mystruct
{
private:
m_data;
};
構造とクラスの違いのみ:
どうすればそれらにアクセスできますか?
クラスのプライベートメンバーにアクセスするように。つまり、構造体メンバー関数内でのみアクセスでき、派生構造体ではアクセスできません。
onlystruct
とclass
の違いはデフォルトのアクセスです(一部の奇妙なテンプレートの状況を除き、以下のAlfのコメントを参照してください)。つまり、クラスと同じ方法でプライベートメンバーにアクセスできます。
struct foo {
int get_X() { return x; }
void set_X(int x_) { x = x_; }
private:
int x;
};
struct
またはclass
を使用するかどうかは、純粋にスタイルの問題です。すべてのメンバーがパブリックである場合(たとえば、メンバー変数がなくパブリック関数のみのファンクタークラスである場合)、struct
を使用する傾向があります。
これを便利にする1つの点は、構造体でフレンドキーWordを使用することもできるため、プライベートメンバーは、特定の関数またはクラスによってのみ使用および変更できるか、それを変更したくないものだけです。この方法では、ユーザーはそれらのセクション自体を変更できません。それらは、少なくともビジュアルスタジオでは、自動入力機能にも表示されません。