Trong C++, tại sao riêng tư hiển thị mặc định cho các thành viên của lớp, nhưng công khai cho cấu trúc?hiển thị mặc định của lớp C++/cấu trúc thành viên
Trả lời
C++ đã được giới thiệu như là một siêu sao của C. Structs được chuyển từ C, trong đó ngữ nghĩa của các thành viên của họ là của công chúng. Có rất nhiều mã C tồn tại, bao gồm cả các thư viện được mong muốn làm việc với C++, sử dụng các cấu trúc. Các lớp học đã được giới thiệu trong C++, và để phù hợp với triết lý đóng gói OO, các thành viên của họ là riêng tư theo mặc định.
Có thể cho khả năng tương thích ngược với cấu trúc C. Bằng cách này, cấu trúc được khai báo trong mã C sẽ tiếp tục hoạt động theo cách tương tự khi được sử dụng trong mã C++.
Vì lớp là cách thông thường để thực hiện định hướng đối tượng, có nghĩa là các biến thành viên phải là riêng tư và có người truy cập công khai - điều này là tốt cho việc tạo low coupling. Mặt khác, Structs phải tương thích với các cấu trúc C, luôn luôn được công khai (không có khái niệm công khai và riêng tư trong C), và không sử dụng các trình truy cập/bộ biến đổi.
- 1. thành viên lớp VB.NET công cộng theo mặc định
- 2. Mức độ hiển thị của các thành viên Nhóm?
- 3. C++: Giá trị mặc định trong thành viên lớp
- 4. Chế độ hiển thị thành viên của ViewModel là gì?
- 5. mẫu: các biến thành viên lớp cha không hiển thị trong lớp
- 6. Thành viên của cấu trúc Dirent
- 7. Visual Studio 2008 Phím tắt để hiển thị Thành viên?
- 8. Khởi tạo rõ ràng cấu trúc/thành viên lớp
- 9. bao gồm cả lớp là thành viên trong cấu trúc
- 10. Không "định nghĩa lại lỗi thông số mặc định" cho chức năng thành viên của mẫu lớp?
- 11. Javadoc với Gradle: hiển thị cũng là thành viên riêng
- 12. Chỉ định một hàm thành viên của lớp làm bạn của một lớp khác?
- 13. Cách khởi tạo cấu trúc thành viên trong danh sách khởi tạo của lớp C++?
- 14. IE <9 hiển thị "Thành viên không tìm thấy"
- 15. Ember.js - mẫu mặc định để hiển thị trong ổ cắm?
- 16. Mục đích của thành viên cbSize trong cấu trúc Win32API
- 17. jqGrid "Đang tải ..." lớp phủ hiển thị "không xác định" mặc dù lưới đang hoạt động
- 18. C++ Cấu trúc thành viên cấu trúc không đổi
- 19. Thành viên lớp học "tĩnh"
- 20. Hiển thị cấu trúc bên trong của đối tượng R
- 21. tài liệu mặc định không hiển thị url đầy đủ
- 22. Hiển thị tất cả các tệp theo mặc định
- 23. iOS - MPMediaItem Hiển thị Ảnh minh họa mặc định
- 24. ImageFlow hiển thị chiều cao chiều rộng mặc định
- 25. Khởi tạo các thành viên tĩnh của một lớp templated
- 26. Hiển thị giá trị điểm theo mặc định trên ZedGraph
- 27. Hiển thị giá trị mặc định trong Spinner trong android
- 28. MKPointAnnotation - Tiêu đề hiển thị mặc định và hoạt ảnh?
- 29. Điểm thành viên tham chiếu lớp cho thành viên khác trong cùng một lớp
- 30. Giá trị mặc định ListPreference không hiển thị
Vâng, công bằng thì không cần thiết phải đóng gói để trở thành thành viên riêng tư. Với nội dung C++, các phương thức truy cập có thể rất rẻ, nhưng trong nhiều ngôn ngữ OOP được cung cấp cho cuộc gọi hàm, mọi người có xu hướng sử dụng truy cập công cộng vì nó rẻ hơn. Để kiểm soát tốt hơn, người ta có thể sử dụng các thuộc tính khai báo nếu lang của chúng hỗ trợ nó. Tuy nhiên, trong mã gốc, việc theo dõi các thay đổi biến là khó hơn các ngôn ngữ được quản lý, do đó, việc đặt các thuộc tính thông qua một điểm duy nhất trong mã là rất hợp lý. – progician