Чи struct
можна успадковувати C ++?
Чи struct
можна успадковувати C ++?
Відповіді:
Так, struct
точно так само, class
за винятком того, що доступність за замовчуванням призначена public
для struct
(поки це private
для class
).
Так. Спадщина за замовчуванням є загальнодоступною.
Синтаксис (приклад):
struct A { };
struct B : A { };
struct C : B { };
Крім того, що Алекс та Еван вже заявили, я хотів би додати, що структура C ++ не схожа на структуру C.
У C ++ структура може мати методи, успадкування тощо, як і клас C ++.
Звичайно. У C ++ структури та класи майже однакові (серед невеликих відмінностей є такі речі, як дефолт до публічного замість приватного).
У C ++ успадкування структури є таким самим, як і клас, за винятком наступних відмінностей:
При виведенні структури з класу / структуру специфікатор доступу за замовчуванням для базового класу / структури є загальнодоступним. А при виведенні класу специфікатор доступу за замовчуванням приватний.
Наприклад, програма 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;
}