c++ - Ok to provide constructor + trivial operators for behaviorless aggregates? -


यह एक अनुवर्ती प्रश्न है।

निम्नलिखित पर विचार करें:

  स्ट्रेट डेटाबंडल {std :: string name; इंट उम्र; डेटाबंडल (): उम्र (0) {} डेटाबंडल (कॉन्स्ट स्ट्रोड :: स्ट्रिंग और नाम, इंट उम्र): नाम (नाम), उम्र (उम्र) {} शून्य स्वैप (डेटाबंडल & amp; rhs) {name.swap (rhs.name) ); Std :: swap (उम्र, rhs.age);} डेटाबंडल & amp; ऑपरेटर = (डेटाबंडल आरए) {स्वैप (आरएएस); वापसी * ​​यह;} बूल ऑपरेटर == (डेटाबंडल और आरएएस) कॉन्स्ट {रिटर्न (नाम == छः नाम) और amp; amp; (उम्र == rhs.age);} bool ऑपरेटर! = (डेटाबंडल और amp; rhs) const {return! (* यह == rhs);}}  

शासन की भावना में # 41 कोडिंग मानक (संबंधित देखें) # 41, क्या यह अब भी एक व्यवहार रहित कुल मिलाकर माना जाएगा? मुझे अधिकतर प्राप्तकर्ताओं / सेटर्स के साथ "गूंगा" कक्षाएं लिखना पसंद नहीं है, और यह केवल एक "बंडल-ओ-डेटा" का संकेत देने के लिए सभी सार्वजनिक संरचना का उपयोग करना होगा लेकिन उपरोक्त उदाहरण में, क्या मैं इस बिंदु पर हूं कि मुझे गेटर्स / सेटर्स के साथ एक डाटाबंडल वर्ग बनाना चाहिए?

< P> नहीं, अभी तक गेटर्स और सेटर्स की आवश्यकता नहीं है यह अभी भी एक सादे डेटा संरचना है, जहां कोई पद्धतियां डेटा संरचना को संशोधित करने के क्रियान्वयन को लागू नहीं करती हैं - तुलना करें, असाइन करें, स्वैप यहां कोई 'व्यवहार नहीं' हैं, वे बुनियादी कार्यों को पूरा करने के लिए भाषा के लिए आवश्यक हैं और डेटा संरचना वास्तव में उपयोगी बनाने के लिए आवश्यक हैं।

आपको यह तय करने की आवश्यकता है कि संरचना के क्षेत्र के बीच धारण करने के लिए कोई निर्भरता या अपरिवर्तनीय हैं या नहीं। यदि वे मौजूद हैं (या भविष्य में मौजूद हो सकते हैं), उन्हें सुनिश्चित करने के लिए गेटर्स या सेटर्स का उपयोग करें (यानी एट्रिब्यूचर बी बदल दिया गया है या नहीं)। यदि नहीं, तो सब कुछ सार्वजनिक करें नाम और उम्र एक इंसान के गुणों को समझा जा रहा है, मुझे नहीं लगता कि एक्सेसर्स वास्तव में जरूरी हैं यहाँ। बेशक यह स्वाद की बात है।


Comments

Popular posts from this blog

php - multilevel menu with multilevel array -

c# - TypeConverter in propertygrid only converts from string, not to -

jQuery UI: Datepicker month format -