Các lớp học trong C++ có thể được khai báo như thế nào public
, private
hoặc protected
?Các lớp C++ (công khai, riêng tư và được bảo vệ)
Trả lời
Trong C++ không có khái niệm về toàn bộ một lớp có một truy cập specifier cách mà có trong Java hoặc C#. Nếu một đoạn mã có khả năng hiển thị của một lớp, nó có thể tham chiếu tên của lớp đó và thao tác nó. Điều đó nói rằng, có một vài hạn chế về điều này. Chỉ vì bạn có thể tham chiếu một lớp không có nghĩa là bạn có thể khởi tạo nó, ví dụ, vì hàm tạo có thể được đánh dấu riêng. Tương tự, nếu lớp là một lớp lồng nhau được khai báo trong phần riêng tư hoặc được bảo vệ của lớp khác, thì lớp đó sẽ không thể truy cập được bên ngoài lớp đó và bạn bè của lớp đó.
Điều đó tùy thuộc vào ý bạn là thành viên hoặc thừa kế. Bạn không thể có số 'private class'
, như vậy.
class Foo
{
public:
Foo() {} //public ctr
protected:
void Baz() //protected function
private:
void Bar() {} //private function
}
Hoặc thừa kế:
class Foo : public Bar
class Foo : protected Bar
class Foo : private Bar
Bằng cách làm tổ một lớp bên trong một:
class A
{
public:
class B {};
protected:
class C {};
private:
class D {};
};
Bạn có thể triển khai "các lớp riêng" bằng cách không xuất bản giao diện của mình cho khách hàng.
Tôi biết không có cách nào để tạo "lớp được bảo vệ".
- 1. Được bảo vệ và hủy riêng tư
- 2. biến riêng tư hoặc được bảo vệ?
- 3. Công khai, riêng tư và được bảo vệ trong lập trình hướng đối tượng là gì?
- 4. Lịch sử của các công cụ sửa đổi kiểm soát truy cập như công khai/riêng tư/được bảo vệ
- 5. Đảm bảo đầu vào của các phương thức riêng tư/được bảo vệ?
- 6. Khối Riêng tư/Được bảo vệ trong Ruby?
- 7. Tuyên bố thuộc tính lớp: riêng tư và công khai
- 8. Phạm vi tư nhân, bảo vệ, và công chúng
- 9. Doxygen: ẩn phương pháp riêng tư/được bảo vệ ... và mẹo
- 10. Phương thức "công khai/được bảo vệ/riêng tư" được triển khai như thế nào và tôi có thể mô phỏng nó như thế nào?
- 11. Lớp thành viên tĩnh - khai báo lớp riêng tư và lớp thành viên riêng tư?
- 12. Nếu người xây dựng của một lớp bên trong riêng tư được công bố công khai hay riêng tư?
- 13. keytool - xem các khóa công khai và riêng tư
- 14. Trường C# được bảo vệ thành riêng tư, thêm thuộc tính - tại sao?
- 15. Quan điểm thực tế về riêng tư và công khai
- 16. Một số câu hỏi về lớp trừu tượng với các nhà xây dựng riêng, công cộng và được bảo vệ
- 17. sự khác biệt giữa các bộ sửa đổi truy cập được bảo vệ và gói riêng tư trong Java?
- 18. Tôi có thể làm gì với biến tĩnh được bảo vệ/riêng tư?
- 19. Có cách nào để đặt thuộc tính tĩnh riêng tư/được bảo vệ bằng các lớp phản chiếu không?
- 20. Lớp học bên trong được bảo vệ/công cộng
- 21. Các phương pháp tĩnh PHP có thể hợp pháp có được sự bảo vệ riêng tư hay không?
- 22. Chỉ nhận Phương thức của các phương thức được bảo vệ và công khai?
- 23. Các khóa công khai/riêng tư của RSA trong YAML
- 24. Có sự khác biệt nào giữa chức năng ảo thuần túy được bảo vệ và riêng tư không?
- 25. Truy cập các phương thức "Công khai" từ các phương thức "Riêng tư" trong lớp javascript
- 26. Có bất kỳ sự khác biệt nào về hiệu suất của các phương thức riêng tư, được bảo vệ, công khai và nội bộ trong các lớp C# không?
- 27. Biến nào không được công khai hoặc được bảo vệ được khai báo là?
- 28. Khi nào chúng ta nên xem xét sử dụng riêng tư hoặc được bảo vệ?
- 29. không thể xác định hàm tạo như được bảo vệ hoặc riêng tư! tại sao?
- 30. Phân vùng cấu trúc thành các phần riêng tư và công cộng?
Như trong, bạn có muốn ai đó không thể sử dụng một lớp học không? Một lớp có thể được phân lớp: tức là lớp A {private: class B {}; }; –
Điều này có thể hữu ích cho bạn: http://www.linuxquestions.org/questions/programming-9/public-private-protected-c-215399/#post1098220 – KyleWpppd
Tại sao có một cuộc bỏ phiếu gần cho câu hỏi này? Điều này có vẻ như một câu hỏi hoàn toàn hợp lý để hỏi. – templatetypedef