Theo quan điểm của tôi, nó không phải là một vấn đề xác định như là một vấn đề khả năng sử dụng.
Các đối tượng là một sự trừu tượng nhằm làm cho nó dễ đọc, viết và lý do về các chương trình phức tạp. Đối với một lập trình viên thực tế, liệu một ngôn ngữ có đáp ứng tất cả các tiêu chí của một định nghĩa chính thức cụ thể về "hướng đối tượng" (dường như có một số đối thủ cạnh tranh!) Không thực sự quan trọng như việc các công cụ mà nó cung cấp có phù hợp để suy nghĩ về chương trình của bạn về các đối tượng đã nói - nghĩa là, thực sự gặt hái những lợi ích năng suất được cho là của OOP.
Trong C ++, các đối tượng là một sự trừu tượng bị rò rỉ khủng khiếp , thường buộc các lập trình viên phải vật lộn với các vấn đề khó chịu liên quan đến cách các đối tượng đó được cấu trúc trong bộ nhớ - các vấn đề gợi nhớ đến mã hóa C thẳng hơn các ngôn ngữ OOP khác. Ví dụ: Câu trả lời thường gặp của C ++ đưa ra lời chỉ trích này (trong số những câu hỏi khác):
Sẽ rất có lợi cho một học viên làm quen với các hệ thống OO khác với C ++ và với các định nghĩa OO khác với bộ ba "đóng gói, kế thừa, đa hình" được diễn giải theo những cách đặc biệt cho phép C ++ được coi là "OO". Ví dụ, một tuyên bố rằng một môi trường thiếu kiểm tra ranh giới hoặc thu gom rác không phải là môi trường OO nghe có vẻ thái quá đối với những người quen với C ++. Nhưng từ nhiều góc độ, nó có rất nhiều ý nghĩa. Nếu bất cứ ai cũng có thể ghi đè lên một đối tượng, thì "đóng gói" ở đâu? Nếu việc xử lý một đối tượng có thể dẫn đến các tham chiếu lơ lửng hoặc rò rỉ bộ nhớ, thì hệ thống "hướng đối tượng" như thế nào ? Còn khả năng cho biết loại vật thể nào được đặt tại một địa điểm và thời gian nhất định? Bạn nói phần mềm hoạt động với các đối tượng - chúng ở đâu? Và nếu không thể tìm ra, làm thế nào để gỡ lỗi phần mềm?
C ++ là hướng đối tượng, nhưng không thoải mái và không đầy đủ: người dùng của nó phải dành rất nhiều nỗ lực để đảm bảo dữ liệu của họ thực sự hoạt động như các đối tượng "thực" chứ không phải là các bit sai lầm. Điều đó nói rằng, rất nhiều mã đã được viết bằng C ++ trong suốt tuổi thọ của nó, hầu hết mã này sử dụng các lớp và công văn động, do đó, nó rõ ràng là thứ mà bạn có thể sử dụng cho OOP thực tế.