पारंपरिक ओओपी "ऑब्जेक्ट" की धारणा को "पॉलिमॉर्फिक इकाई" के रूप में परिभाषित करता है जो विधियों और डेटा को लेता है, और अन्य ऑब्जेक्ट्स से एल्गोरिदम से संदर्भित किया जा सकता है।
ऑब्जेक्ट की सी ++ परिभाषा - एक सार है- "जो कुछ भी एक राज्य को बनाए रखने के लिए एक जगह लेता है"। यह मुख्य अंतर का कारण बनता है कि सी ++ "ऑब्जेक्ट्स" में "मान व्यवहार" होता है और "विधियों" आवश्यक रूप से सदस्य नहीं होते हैं, और ऑब्जेक्ट को रनटाइम बहुरूपता का जरूरी समर्थन करने की आवश्यकता नहीं होती है। , | (संदर्भ संकेत) कार्यावधि में बहुरूपता को हल करने के लिए एक कुंजी के रूप में अविवेक प्रणाली का उपयोग कर - (आधार) -
सी ++ प्रोग्राम परंपरागत OOP परिभाषा के बाद, (स्मार्ट) द्वारा संदर्भित वर्गों के साथ समाप्त होता है।
आधुनिक सी ++ ऑब्जेक्ट का उपयोग मूल्य-प्रतिलिपि या सेमेन्टिक्स को स्थानांतरित करने के रूप में करता है, और टेम्पलेट्स और जेनेरिक एल्गोरिदम और टाइप गुणों के साथ संकलन समय पर पॉलीमोर्फिज्म को संबोधित करता है।
दो चीजें एक दूसरे के खिलाफ नहीं हैं, लेकिन सी ++ जानबूझकर उनमें से दोनों का विलय हो रहा है, इसलिए परंपरागत ओओपी एक (वस्तु को संदर्भित करने के लिए एक वर्ग का उदाहरण) "ऑब्जेक्ट" की परिभाषा को कम करना है तथ्य- सी ++ सुविधाओं और संभावनाओं का एक आधा हिस्सा काटना।
lambdas के बारे में, यह सही अर्थों में वे भाव (स्वयं वस्तुओं नहीं) गुमनाम टाइप वस्तुओं लौट रहे हैं।
तो कहा कि वे वस्तुओं रहे हैं अनुचित है: a+b
यह एक वस्तु ही नहीं है: यह एक वस्तु (अभिव्यक्ति की परिणाम) पैदा करता है।एक ही [](){}
के लिए है: यह एक वस्तु ही नहीं है: यह एक वस्तु पैदा करता है, आप की तरह
auto fn = [](){}; //create a lambda and assign to fn.
fn(); //just calls it
में fn प्रकार
class lambda_uniquename
{
public:
void operator()()
{}
};
की तरह कुछ वस्तु यहाँ है, यहां तक कि दुकान कर सकते हैं,, lambda
वर्ग नहीं है, लेकिन fn
चर।
स्रोत
2013-04-11 12:23:50
'int x;' 'x' कक्षा का एक उदाहरण है? – Pubby
@ पब्बी लेकिन मेरा सवाल है: एक वस्तु क्या है? प्रोग्रामिंग दुनिया में इस शब्द के लिए किस तरह की परिभाषा मौजूद है और सी ++ परिभाषाओं में क्या परिणाम हैं? जो मैं जानता हूं वह int std :: int से एक प्रकार है, इसलिए यह एक वर्ग है, इसलिए इस मामले में x यह किसी ऑब्जेक्ट के लिए एक लेबल है, लेकिन मैंने यह परिभाषित नहीं किया है कि वास्तव में कोई ऑब्जेक्ट क्या है। – user2269624
ऐसी कक्षा नहीं है जैसे 'std :: int'। –