Có thể struct
được thừa kế trong C ++?
Có thể struct
được thừa kế trong C ++?
Câu trả lời:
Có, struct
chính xác như class
ngoại trừ khả năng truy cập mặc định là public
cho struct
(trong khi đó là private
cho class
).
Đúng. Việc thừa kế được công khai theo mặc định.
Cú pháp (ví dụ):
struct A { };
struct B : A { };
struct C : B { };
Khác với những gì Alex và Evan đã nêu, tôi muốn nói thêm rằng cấu trúc C ++ không giống cấu trúc C.
Trong C ++, một cấu trúc có thể có các phương thức, kế thừa, v.v. giống như một lớp C ++.
Tất nhiên. Trong C ++, các cấu trúc và các lớp gần như giống hệt nhau (những thứ như mặc định là công khai thay vì riêng tư là một trong những khác biệt nhỏ).
Trong C ++, sự kế thừa của cấu trúc giống như một lớp ngoại trừ các khác biệt sau:
Khi lấy một cấu trúc từ một lớp / struct, bộ xác định truy cập mặc định cho một lớp / struct cơ sở là công khai. Và khi lấy một lớp, trình xác định truy cập mặc định là riêng tư.
Ví dụ, chương trình 1 không thành công với lỗi biên dịch và chương trình 2 hoạt động tốt.
// 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;
}