struct
C ++ 'da kalıtsal olabilir mi?
struct
C ++ 'da kalıtsal olabilir mi?
Yanıtlar:
Evet, struct
aynen gibidir class
varsayılan erişilebilirlik olduğunu haricinde public
için struct
(öyle ise private
için class
).
Evet. Devralma varsayılan olarak herkese açıktır.
Sözdizimi (örnek):
struct A { };
struct B : A { };
struct C : B { };
Alex ve Evan'ın daha önce belirttikleri dışında, bir C ++ yapısının bir C yapısı gibi olmadığını eklemek isterim.
C ++ 'da, bir yapı tıpkı bir C ++ sınıfı gibi yöntemlere, mirasa vb. Sahip olabilir.
Elbette. C ++ 'da, yapılar ve sınıflar neredeyse aynıdır (özel yerine halka açık varsayılan şeyler küçük farklar arasındadır).
C ++ 'da, bir yapının mirası aşağıdaki farklar dışında bir sınıfla aynıdır:
Bir yapı / sınıftan türetilirken, temel sınıf / yapı için varsayılan erişim belirteci herkese açıktır. Ve bir sınıf türetirken, varsayılan erişim belirteci özeldir.
Örneğin, program 1 bir derleme hatasıyla başarısız olur ve program 2 düzgün çalışır.
// 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;
}