Bisakah a struct
diwarisi dalam C ++?
Bisakah a struct
diwarisi dalam C ++?
Jawaban:
Ya, struct
persis seperti class
kecuali aksesibilitas default public
untuk struct
(sementara private
untuk class
).
Iya. Warisan bersifat publik secara default.
Sintaks (contoh):
struct A { };
struct B : A { };
struct C : B { };
Selain apa yang telah dinyatakan oleh Alex dan Evan, saya ingin menambahkan bahwa sebuah C ++ struct tidak seperti sebuah C struct.
Dalam C ++, sebuah struct dapat memiliki metode, pewarisan, dll. Seperti kelas C ++.
Tentu saja. Dalam C ++, struct dan kelas hampir identik (hal-hal seperti default ke publik, bukan privat adalah di antara perbedaan kecil).
Dalam C ++, pewarisan struktur adalah sama dengan kelas kecuali perbedaan berikut:
Saat memperoleh struct dari kelas / struct, penentu akses default untuk kelas / struct dasar bersifat publik. Dan ketika menurunkan kelas, specifier akses default bersifat pribadi.
Misalnya, program 1 gagal dengan kesalahan kompilasi dan program 2 berfungsi dengan baik.
// 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;
}