Có thể thừa hưởng struct
trong C++ không?Kế thừa cấu trúc trong C++
Trả lời
Vâng, struct
hoàn toàn giống với class
trừ khả năng tiếp cận mặc định là public
cho struct
(trong khi nó private
cho class
).
Tất nhiên. Trong C++, cấu trúc và lớp học gần như giống hệt nhau (những thứ như mặc định cho công chúng thay vì riêng tư nằm trong số những khác biệt nhỏ).
Có. Kế thừa là công khai theo mặc định.
Cú pháp (ví dụ):
struct A { };
struct B : A { };
struct C : B { };
khác so với những gì Alex và Evan đã nói, tôi muốn nói thêm rằng một struct C++ không giống như một struct C.
Trong C++, cấu trúc có thể có các phương thức, kế thừa, vv giống như một lớp C++.
cấu trúc C++ có thể giống như cấu trúc C. Khi nó được, nó được gọi là một POD - Plain Old Datatype. Nó là một sự khác biệt quan trọng, vì ví dụ, chỉ các cấu trúc POD mới có thể là một phần của các công đoàn. – camh
Nhưng POD có thể có phương pháp, do đó, không phải là "giống như" cấu trúc C theo nghĩa mà cgorshing đang nói đến. –
Trong C++, thừa kế một cấu trúc giống như một lớp ngoại trừ những khác biệt sau:
Khi phát sinh một cấu trúc từ một lớp/struct, mặc định truy cập-specifier cho một lớp cơ sở/struct là công khai. Và khi phát sinh một lớp, thông số 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;
}
- 1. C++ Cấu trúc kế thừa trong Cython
- 2. cấu trúc và lớp và kế thừa (C++)
- 3. C#: Thừa kế thừa kế
- 4. Thừa kế trong C++
- 5. Quá nhiều cấu trúc đối tượng cho khuôn mẫu phụ thuộc/Mô hình kế thừa kế thừa
- 6. Java thừa kế vs C# thừa kế
- 7. Thừa kế để mở rộng cấu trúc dữ liệu trong Haskell
- 8. C# - thừa kế tiên tiến
- 9. "một cấu trúc có thừa kế công khai theo mặc định"
- 10. C# đa kế thừa
- 11. Về thừa kế C#
- 12. thừa kế mẫu C++
- 13. C# thừa kế
- 14. C# Thừa kế lớp
- 15. C++ thừa kế downcasting
- 16. Tái cấu trúc mã C cũ vào thiết kế MVC
- 17. Sao chép cấu trúc vào cấu trúc trong C
- 18. Sử dụng thuộc tính @ synthesize/@ trong kế thừa Objective-C
- 19. Thừa kế thừa kế và thừa kế phương thức
- 20. Mapping thừa kế đa cấp trong Hibernate
- 21. Tìm "mã chết" trong ứng dụng kế thừa lớn C++
- 22. Cấu trúc Constructor trong C++?
- 23. Cấu trúc tĩnh trong C++
- 24. Thừa kế kim cương (C++)
- 25. Thừa kế tình bạn trong C++?
- 26. Thừa kế thành viên tĩnh trong C#
- 27. Chi phí thừa kế trong C++
- 28. C++ vector với thừa kế
- 29. C# thừa kế cơ sở
- 30. Thừa kế chọn lọc C++
Đây phải là câu trả lời được chấp nhận. – QuantumKarl