structとclassキーワードの定義クラスでの違い
structキーワードはC言語から継承され、classとstructはクラスを定義できます.クラスを定義する唯一の違いは、デフォルトのメンバー保護レベルとデフォルトの継承保護レベルです(P 57-57ページ、2.8-セクション2.8;P 485、15.2.5):
デフォルトではstructの保護レベルはpublicであり、classの保護レベルはprivateです.
次に、この2つの例を示します.
例1:デフォルトのメンバー保護レベル
上記の2つのクラスは、デフォルトの保護レベルを持つクラスS_Baseメンバーの保護レベルがpublic、クラスC_Baseメンバーの保護レベルがprivateであるアクセスラベル(public、protected、private)を表示せずに使用します.次のコードに相当します.
例2:デフォルトの継承保護レベル
次の2つのクラスに相当します.
References:
《C++Primer中国語版第4版》P 57,485
デフォルトではstructの保護レベルはpublicであり、classの保護レベルはprivateです.
次に、この2つの例を示します.
例1:デフォルトのメンバー保護レベル
struct S_Base {
int foo(int) { return 0; }
int val;
};
class C_Base {
int foo(int) { return 0; }
int val;
};
上記の2つのクラスは、デフォルトの保護レベルを持つクラスS_Baseメンバーの保護レベルがpublic、クラスC_Baseメンバーの保護レベルがprivateであるアクセスラベル(public、protected、private)を表示せずに使用します.次のコードに相当します.
struct S_Base {
public:
int foo(int) { return 0; }
int val;
};
class C_Base {
private:
int foo(int) { return 0; }
int val;
};
例2:デフォルトの継承保護レベル
struct S_Derived : S_Base {
};
class C_Derived : C_Base {
};
次の2つのクラスに相当します.
struct S_Derived : public S_Base {
};
class C_Derived : private C_Base {
};
References:
《C++Primer中国語版第4版》P 57,485