เหตุผลที่ C++ ไม่ใช่ Pure OOP
แม้ C++ จะรองรับ 3 ศีลของ OOP ได้แก่ Inheritance, Encapsulation, Polymorphism แต่ไม่ได้รองรับอย่างเต็มที่ ทำให้เป็น "Partially Object-Oriented"
1. ฟังก์ชัน main() ไม่บังคับอยู่ใน Class
ใน C++ ฟังก์ชัน main() อยู่นอก Class สามารถเขียนโค้ดได้โดยไม่ต้องสร้าง Class เลย (ต่างจาก Java ที่บังคับ main() ต้องอยู่ใน Class)
2. Global Variables
C++ รองรับ Global Variables ที่เข้าถึงได้จากทุกที่ ไม่มีการควบคุมการเข้าถึง (Access Control) ทำให้ Encapsulation ไม่สมบูรณ์ (Java ใช้ access specifier ใน Class)
3. Friend Functions
C++ มี Friend Functions ที่สามารถเข้าถึง private/protected members ของ Class อื่นได้ ซึ่งละเมิดหลักการ Encapsulation (Java ไม่มี friend functions)
สรุป
C++ เป็น Multi-paradigm Language รองรับทั้ง Procedural และ OOP ให้ความยืดหยุ่นสูงสุด แต่犠牲ความบริสุทธิ์ของ OOP