मैं मौजूदा उत्तरों में जोड़ने जा रहा हूं क्योंकि आधुनिक सी ++ अब एक चीज है और इन जैसे सवालों के साथ मदद के लिए आधिकारिक कोर दिशानिर्देश बनाए गए हैं।
यहां दिशानिर्देशों से संबंधित एक अनुभाग है:
C.2: वर्ग का उपयोग करें यदि वर्ग में एक अपरिवर्तनीय है; यदि डेटा सदस्य स्वतंत्र रूप से भिन्न हो सकते हैं तो संरचना का उपयोग करें
एक अपरिवर्तनीय एक वस्तु के सदस्यों के लिए एक तार्किक स्थिति है जिसे एक सदस्य को मानने के लिए सार्वजनिक सदस्य कार्यों के लिए स्थापित करना होगा। इन्वर्टर स्थापित होने के बाद (आमतौर पर एक कंस्ट्रक्टर द्वारा) प्रत्येक सदस्य फ़ंक्शन को ऑब्जेक्ट के लिए बुलाया जा सकता है। एक अनौपचारिक को अनौपचारिक रूप से कहा जा सकता है (जैसे, एक टिप्पणी में) या अधिक औपचारिक रूप से अपेक्षाओं का उपयोग करते हुए।
यदि सभी डेटा सदस्य एक-दूसरे से स्वतंत्र रूप से भिन्न हो सकते हैं, तो कोई अपरिवर्तनीय संभव नहीं है।
यदि किसी वर्ग के पास कोई निजी डेटा है, तो कोई उपयोगकर्ता किसी निर्माता के उपयोग के बिना किसी ऑब्जेक्ट को पूरी तरह से प्रारंभ नहीं कर सकता है। इसलिए, वर्ग निश्चित एक रचनाकार प्रदान करेगा और इसका अर्थ निर्दिष्ट करना होगा। इसका प्रभावी रूप से अर्थ यह है कि किसी अपरिवर्तनीय को परिभाषित करने की निश्चित आवश्यकता है।
प्रवर्तन
सभी डेटा निजी और सार्वजनिक सदस्यों के साथ कक्षाओं के लिए देखें।
दिए गए कोड उदाहरण:
struct Pair { // the members can vary independently
string name;
int volume;
};
// but
class Date {
public:
// validate that {yy, mm, dd} is a valid date and initialize
Date(int yy, Month mm, char dd);
// ...
private:
int y;
Month m;
char d; // day
};
Class
उदाहरण के लिए, एक दूसरे से प्राप्त या परस्पर संबंध रखने वाले सदस्यों के लिए अच्छी तरह से काम करना। वे तात्कालिकता पर विवेक की जाँच में भी मदद कर सकते हैं। Struct
"डेटा के बैग" होने के लिए अच्छी तरह से काम करते हैं, जहां वास्तव में कुछ खास नहीं चल रहा है, लेकिन सदस्य तार्किक रूप से समझ में आते हैं।
इससे, यह समझ में आता है कि class
एनकैप्सुलेशन और अन्य संबंधित कोडिंग अवधारणाओं का समर्थन करने के लिए मौजूद है, यह struct
बस के लिए बहुत उपयोगी नहीं हैं।