Nó đã cho tôi một thời gian dài để nhận ra tầm quan trọng và tinh tế có biến:C++ mẫu cụ thể do thiết kế ngôn ngữ
1) tồn tại trên stack
2) đã destructors họ gọi khi họ rơi ra của phạm vi
.
Hai điều này cho phép những thứ như:
A) RAII
B) refcounted GC
Thú vị đủ, (1) & (2) không có sẵn trong ngôn ngữ "thấp" như C /Hội,, tổ hợp; cũng như trong các ngôn ngữ "cao hơn" như Ruby/Python/Java (vì GC ngăn chặn việc phá hủy các đối tượng có thể dự đoán được).
Tôi tò mò - những kỹ thuật nào khác mà bạn biết là rất cụ thể về C++, do lựa chọn thiết kế ngôn ngữ.
Cảm ơn!
Chỉnh sửa: Nếu câu trả lời của bạn là "điều này hoạt động trong C++ & ngôn ngữ khác này", điều đó cũng được. Những điều tôi muốn tìm hiểu tương tự như:
Bằng cách chọn không có các tính năng nhất định (như GC), chúng tôi có được các tính năng khác (như RAII + khả năng hủy hoại đối tượng có thể dự đoán được). Trong những lĩnh vực nào của C++, bằng cách chọn KHÔNG có các tính năng mà các ngôn ngữ "cấp cao hơn" khác có, C++ quản lý để có được các mẫu mà các langauges cấp cao hơn không thể diễn đạt.
Tôi không tin C++ có GC, C# không đương nhiên nhưng đó là một con thú khác nhau. – Hogan
Có, quản lý tài nguyên thông qua RAII (có hoặc không có tính toán ref) không thực sự là GC, nó tổng quát hơn nhiều. –
Plus nó xảy ra tại thời điểm xác định trước, GC là không xác định. – Hogan