อย่างที่เราทราบคุณสมบัติพื้นฐานบางอย่างของภาษาโปรแกรมเชิงวัตถุคือ Inheritance, Encapsulation, Polymorphism ภาษาใดๆ ที่สนับสนุนคุณลักษณะเหล่านี้ทั้งหมดเรียกว่าภาษาโปรแกรมเชิงวัตถุ บางภาษาเช่น C++ รองรับสามภาษานี้แต่ไม่ทั้งหมด ดังนั้นจึงเป็นภาษาเชิงวัตถุบางส่วน ให้เราดูเหตุผลว่าทำไม C++ ถึงไม่เรียกว่าภาษาเชิงวัตถุอย่างสมบูรณ์
- ใน C++ เราจำเป็นต้องมีฟังก์ชัน main() เพื่อเริ่มดำเนินการ แต่ใน C++ ฟังก์ชันหลักจะไม่ปรากฏอยู่ในคลาส ดังนั้นเราจึงสามารถเขียนโค้ดโดยไม่ต้องใช้คลาสใน C++ ภาษา OOP บางภาษา เช่น JAVA ต้องการหนึ่งคลาสเหมือนกับชื่อไฟล์ มีฟังก์ชันหลักอยู่ภายในนั้น
- ในภาษา C++ เราสามารถใช้ตัวแปรส่วนกลางได้ ที่สามารถเข้าถึงได้จากทุกที่ ไม่ได้ทำให้ความเป็นส่วนตัวของข้อมูลสมบูรณ์ เนื่องจากไม่มีใครสามารถจำกัดการเข้าถึงและแก้ไขข้อมูลเหล่านั้นได้ ดังนั้นจึงมั่นใจได้ว่ามีการห่อหุ้มบางส่วน ใน JAVA เราสามารถใช้ตัวแปรในชั้นเรียน และใช้ตัวระบุการเข้าถึงกับตัวแปรเหล่านั้นได้
- C++ มีแนวคิดเกี่ยวกับฟังก์ชันของเพื่อน ด้วยการใช้ฟังก์ชันเพื่อน เราสามารถเข้าถึงสมาชิกส่วนตัวและสมาชิกที่ได้รับการคุ้มครองของชั้นเรียนเดียวได้ นอกจากนี้ยังทำให้แนวคิดของ OOL เป็นสีม่วง Java ไม่รองรับฟังก์ชั่นของเพื่อน