struct
をC++で継承できますか?
はい、struct
はclass
とほぼ同じです。ただし、デフォルトのアクセシビリティはpublic
の場合はstruct
です(ただし、private
の場合はclass
です)。
はい。継承はデフォルトでパブリックです。
構文(例):
struct A { };
struct B : A { };
struct C : B { };
アレックスとエヴァンがすでに述べたこと以外に、C++構造体はC構造体とは異なることを付け加えます。
C++では、構造体はC++クラスと同様にメソッド、継承などを持つことができます。
もちろん。 C++では、構造体とクラスはほぼ同じです(プライベートではなくパブリックにデフォルト設定するようなものは、小さな違いの1つです)。
C++では、構造体の継承はクラスと同じですが、次の違いがあります。
クラス/構造体から構造体を派生させる場合、基本クラス/構造体のデフォルトのアクセス指定子はパブリックです。また、クラスを派生する場合、デフォルトのアクセス指定子はprivateです。
たとえば、プログラム1はコンパイルエラーで失敗し、プログラム2は正常に動作します。
// Program 1
#include <stdio.h>
class Base {
public:
int x;
};
class Derived : Base { }; // Is equivalent to class Derived : private Base {}
int main()
{
Derived d;
d.x = 20; // Compiler error because inheritance is private
getchar();
return 0;
}
// Program 2
#include <stdio.h>
struct Base {
public:
int x;
};
struct Derived : Base { }; // Is equivalent to struct Derived : public Base {}
int main()
{
Derived d;
d.x = 20; // Works fine because inheritance is public
getchar();
return 0;
}