जैसा कि हम जानते हैं, ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषा की कुछ बुनियादी विशेषताएं हैं: इनहेरिटेंस, एनकैप्सुलेशन, पॉलीमॉर्फिज्म। कोई भी भाषा जो इन विशेषताओं का पूरी तरह से समर्थन करती है, उसे ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषा के रूप में जाना जाता है। C++ जैसी कुछ भाषाएं इन तीनों का समर्थन करती हैं लेकिन पूरी तरह से नहीं, इसलिए वे आंशिक रूप से ऑब्जेक्ट ओरिएंटेड भाषा हैं। आइए देखें कि C++ को पूरी तरह से ऑब्जेक्ट ओरिएंटेड भाषा के रूप में क्यों नहीं जाना जाता है।
- C++ में, हमें प्रोग्राम शुरू करने के लिए main() फ़ंक्शन की आवश्यकता होती है, लेकिन C++ में, main फ़ंक्शन क्लास के अंदर मौजूद नहीं होते हैं। इसलिए हम C++ में क्लास का उपयोग किए बिना भी कोड लिख सकते हैं। JAVA जैसी कुछ OOP भाषाओं में, फ़ाइल के नाम के समान एक क्लास की आवश्यकता होती है, और main फ़ंक्शन उस क्लास के अंदर मौजूद होता है।
- C++ में, हम ग्लोबल वेरिएबल्स का उपयोग कर सकते हैं। जिन्हें कहीं से भी एक्सेस किया जा सकता है। यह डेटा को पूर्ण गोपनीयता प्रदान नहीं करता है, क्योंकि कोई भी उन डेटा को एक्सेस और संशोधित करने से प्रतिबंधित नहीं होता है, इसलिए यह एनकैप्सुलेशन को आंशिक रूप से सुनिश्चित करता है। JAVA में, हम क्लास में वेरिएबल्स का उपयोग कर सकते हैं, और उन पर एक्सेस स्पेसिफायर भी लगा सकते हैं।
- C++ में फ्रेंड फ़ंक्शन की अवधारणा है। फ्रेंड फ़ंक्शन का उपयोग करके, हम एक क्लास के निजी और संरक्षित सदस्यों को एक्सेस कर सकते हैं। यह OOL की अवधारणा का उल्लंघन भी करता है। Java फ्रेंड फ़ंक्शन का समर्थन नहीं करता है।