Lớp địa phương, lớp bên trong và lớp lồng nhau có nghĩa là những thứ giống nhau trong C++ không?Lớp địa phương, lớp bên trong và lớp lồng nhau có giống nhau trong C++ không?
Trả lời
Lớp địa phương và lớp lồng nhau là những con thú khác nhau.
A Lớp lồng nhau là lớp được khai báo trong phạm vi của một lớp khác.
A Lớp địa phương được khai báo trong định nghĩa hàm.
Lớp bên trong là thuật ngữ C++ không chuẩn, Vì vậy, tôi không chắc chắn cách xác định cụm từ đó.
lớp lồng nhau:
IBM Tài liệu như một tài liệu đẹp here.
Để Tóm tắt:
- Tên của một lớp lồng nhau là địa phương đến lớp kèm theo của nó. Trừ khi bạn sử dụng con trỏ, tham chiếu hoặc tên đối tượng rõ ràng, khai báo trong một lớp lồng nhau chỉ có thể sử dụng cấu trúc hiển thị, bao gồm tên loại, thành viên tĩnh và liệt kê từ lớp bao quanh và biến toàn cầu.
- Chức năng thành viên của một lớp lồng nhau tuân thủ các quy tắc truy cập thông thường và không có đặc quyền truy cập đặc biệt cho các thành viên trong các lớp kèm theo của họ. Các hàm thành viên của lớp kèm theo không có quyền truy cập đặc biệt cho các thành viên của một lớp lồng nhau
Lớp học địa phương:
Câu trả lời này của tôi here tài liệu các điểm tinh tế kết hợp với các lớp học tại địa phương.
Trích dẫn dự thảo của C++ 11 (N3290):
9,7 tờ khai lớp lồng nhau [class.nest]
1 Một lớp học có thể được khai báo trong lớp khác. Một lớp được khai báo trong lớp khác được gọi là một lớp lồng nhau là .
9,8 tờ khai lớp Local [class.local]
1 Một lớp học có thể được khai báo trong định nghĩa hàm; một lớp như vậy được gọi là một lớp địa phương.
Không có khái niệm về lớp bên trong được chỉ định trong tiêu chuẩn C++.
Lớp bên trong chụp tham chiếu this
của lớp kèm theo. Một hệ thống phân cấp của các cá thể lớp bên trong tạo thành một cấu trúc cây. Điều này là duy nhất cho Java.
- 1. Lớp lồng nhau bên trong giao diện
- 2. .NET XmlSerializer và các lớp lồng nhau trong C#
- 3. Lớp lồng nhau Javascript
- 4. Cách thiết kế các lớp mẫu lồng nhau trong đó các lớp lồng nhau cùng loại
- 5. lồng nhau enum trong C# và các lớp học
- 6. C# Nối tiếp các lớp lồng nhau
- 7. Các lớp lồng nhau riêng
- 8. Java: Các lớp lồng nhau không tĩnh và instance.super()
- 9. Các lớp CSS lồng nhau
- 10. lớp lồng nhau: Truy cập vào protected member của lớp bao quanh lớp từ một lớp bảo vệ lồng nhau
- 11. SwingWorker có phải là một lớp lồng nhau không?
- 12. Trả về loại lớp lồng nhau trong Java
- 13. lớp Inner và lớp Outer trong C#
- 14. C++ lớp lồng nhau tuyên bố mong lỗi
- 15. Gọi các phương thức có tên giống nhau trong các lớp cơ sở
- 16. Phạm vi của các lớp lồng nhau?
- 17. Làm thế nào để truy cập một phương thức siêu lớp từ một lớp lồng nhau?
- 18. Java: lớp lồng nhau và phản chiếu tĩnh: "$" so với "."
- 19. Phạm vi Python bên trong một hàm lồng nhau bên trong một lớp?
- 20. Làm thế nào một lớp lồng nhau có thể truy cập một phương thức trong lớp ngoài trong Ruby?
- 21. Sự khác nhau cơ bản giữa Java và C# về các lớp bên trong/địa phương/ẩn danh là gì?
- 22. Annotate lớp với lớp bên trong
- 23. Java: giới hạn các lớp lồng nhau?
- 24. C++ trả về lớp lồng nhau với mẫu trên bài toán lớp cơ sở
- 25. Lambda với các lớp lồng nhau
- 26. Lớp lồng nhau trong vòng lặp, sẽ có n trường hợp của lớp?
- 27. Có thể cha mẹ và lớp con trong Java có biến dụ giống nhau không?
- 28. Mẫu lớp địa phương
- 29. Có cách nào để đặt trước các lớp lồng nhau trong C++ không?
- 30. Gọi hàm lớp bên ngoài từ lớp bên trong
Và không có lớp bên trong trong C++. Đó là một khái niệm Java. –