5

アクセス指定子 -privateおよびprotected- を C++ 構造体 (クラスではなく) で使用できますか?

また、アクセス修飾子は C に存在しますか?

4

6 に答える 6

11

C には C++ スタイルのアクセス修飾子がありません。ACstructは、他のオブジェクト タイプのメンバーを含む単なる複合オブジェクト タイプです。

C++ では、astructと aclassほとんど同じです。唯一の違いは、構造体メンバーがpublicデフォルトであり、クラス メンバーがprivateデフォルトであることです。したがって、この:

struct foo {
private:
    // ...
};

これと同等です:

class foo: {
    // ...
};

これは他の場所で回答されています

これはprivate、 、public、およびキーワードが定義または定義のprotectedいずれかで等しく有効であることを意味します。structclass

一方、プログラミング スタイルの問題として、アクセス修飾子を使用する場合は、型をclassではなくとして定義することをお勧めしますstruct。これについては意見が分かれますが、私見では、structキーワードはPOD (Plain Old Data)struct型、またはC で sとして定義できる型に使用する必要があります。

厳密に言えば、C++ 構造体は C 構造体とは大きく異なり、C++ クラスとほぼ同じです。しかし、C++ で として定義されているものを見た場合、それstructは C に似たものであると予想します (または少なくとも好みます) struct

于 2013-03-25T19:13:16.787 に答える
3

C++ では、構造体はクラスと同じですが、唯一の違いは、クラスのデフォルト スコープであるプライベートとは異なり、デフォルト スコープがパブリックであることです。アクセス指定子はC存在しませんが、結局のところ、それらを何に使用しますか?

于 2013-03-25T14:46:24.910 に答える
2

はい、 C++ 構造体でpublic, protectedinを使用できます。private

いいえ、アクセス修飾子は C には存在しません。

classC++ では、との唯一の違いはstruct、 a のメンバーがclassデフォルトprivateで であるのに対し、 a のメンバーはデフォルトで であるというstructことですpublic。これは、C++structがメンバー関数、コンストラクター、オーバーロードされた演算子を持ち、.a の他の機能を使用できることを意味しclassます。

于 2013-03-25T14:45:49.057 に答える
1

structclassc++と大差ありません。デフォルトの可視性は、非公開ではなく公開です。C はそれらをサポートしていません。

于 2013-03-25T14:46:03.607 に答える
0

C++ におけるastructと aの唯一の違いは、 aのメンバーがデフォルトであり、 aのメンバーがデフォルトであることです。両方で他のものを使用できるのと同様に、両方でアクセス指定子を使用できます。classstructpublicclassprivate

C にはアクセス指定子がありません。

于 2013-03-25T14:46:16.160 に答える
0

アクセス指定子 (private および protected) を C++ の構造体で使用できますか?

はい。Astructはクラスです。唯一の違いは、指定しない場合のデフォルトのアクセシビリティ ( publicfor struct、およびprivatefor ) です。class

また、C言語でもアクセス修飾子の使用は許可されていますか? アクセス指定子はCに本当に存在しますか??

いいえ、C にはアクセス指定子がありません。

于 2013-03-25T14:47:15.050 に答える