इन दो प्रकार के पॉइंटर्स के बीच क्या अंतर है? जहां तक मैं पढ़ सकता हूं, QSharedPointer स्थिति को अच्छी तरह से संभाल सकता है, तो QSharedDataPointer की आवश्यकता क्या है?QSharedPointer और QSharedDataPointer के बीच अंतर?
उत्तर
क्यूटी प्रलेखन QSharedDataPointer
QSharedDataPointer वर्ग से एक परोक्ष साझा वस्तु के लिए सूचक का प्रतिनिधित्व करता है। QSharedDataPointer आपके स्वयं के अंतर्निहित साझा कक्षाओं को आसान बनाता है। QSharedDataPointer लागू थ्रेड-सुरक्षित संदर्भ गिनती, यह सुनिश्चित करना कि आपके पुनर्विक्रेता कक्षाओं में QSharedDataPointers जोड़ना, उन्हें गैर-पुनर्वित्त नहीं देगा। कक्षाओं के उपयोग की आसानी के साथ पॉइंटर्स की स्मृति दक्षता और मेमोरी दक्षता को गठबंधन करने के लिए कई Qt कक्षाओं द्वारा लागू साझाकरण का उपयोग किया जाता है। अधिक जानकारी के लिए साझा कक्षा पृष्ठ देखें।
उदाहरण उपयोग -
#include <QSharedData>
#include <QString>
class EmployeeData : public QSharedData
{
public:
EmployeeData() : id(-1) { }
EmployeeData(const EmployeeData &other)
: QSharedData(other), id(other.id), name(other.name) { }
~EmployeeData() { }
लिए QSharedPointer
QSharedPointer वर्ग एक साझा सूचक QSharedPointer करने के लिए एक मजबूत संदर्भ रखती C++ में एक स्वचालित, साझा सूचक है। यह सामान्य प्रयोजनों के लिए स्थिरता के संबंध में सामान्य सूचक की तरह व्यवहार करता है। QSharedPointer को उस पॉइंटर को हटा देगा जब यह गुंजाइश से बाहर हो जाता है, बशर्ते कोई अन्य QSharedPointer ऑब्जेक्ट संदर्भित कर रहे हैं।
> QSharedPointer<MyObject> obj =
> QSharedPointer<MyObject>(new MyObject);
तो, QSharedDataPointer implicititly साझा कक्षाएं बनाने बनाने के लिए प्रयोग किया जाता है। जबकि QSharedPointer स्मार्ट पॉइंटर की गणना करने वाला एक संदर्भ है जो कक्षाओं को इंगित करता है।
संपादित
जब Memory management in Qt? पढ़ने, मैं इस लिंक http://labs.qt.nokia.com/2009/08/25/count-with-me-how-many-smart-pointer-classes-does-qt-have/ पाया। क्यूटी के विभिन्न स्मार्ट पॉइंटर्स की वास्तव में उत्कृष्ट चर्चा है (वर्तमान एपीआई 8 है)।
- 1. "। +" और "। +?" के बीच अंतर
- 2. AJAX के बीच अंतर और
- 3. CMake: $ {} और के बीच अंतर "$ {}"
- 4. ऑब्जेक्ट और * के बीच अंतर?
- 5. $ के बीच अंतर? और PowerShell
- 6. == और मामले के बीच अंतर?
- 7. "या" और "||" के बीच अंतर
- 8. वीबीए: और + के बीच अंतर
- 9. पैरामीटर परिभाषाओं के बीच अंतर (प्रकार और नाम), और (प्रकार * नाम) के बीच अंतर क्या हैं?
- 10. संबंधों के बीच और कहां के बीच अंतर
- 11. BOOST_CHECK_CLOSE और BOOST_CHECK_CLOSE_FRACTION के बीच अंतर?
- 12. शून्य के बीच अंतर? और खाली? योजना
- 13. मूल्य और वस्तु के बीच अंतर
- 14. कंपास और सास के बीच अंतर?
- 15. स्ट्रॉन्ग और कमजोर आईबीओटलेट्स के बीच अंतर
- 16. COM और DCOM के बीच अंतर?
- 17. "coroutine" और "धागा" के बीच अंतर?
- 18. जेपीए और जेडीओ के बीच अंतर?
- 19. स्ट्रिंग [] ए और स्ट्रिंग के बीच अंतर ...
- 20. फ़ैक्टर और एंडोफंक्चर के बीच अंतर
- 21. वेबसाइट और वेब अनुप्रयोग के बीच अंतर?
- 22. एचटीएमएल.रेंडरएक्शन और एचटीएमएल के बीच अंतर। एक्शन
- 23. NonSerialized और Xml.Serialization.XmlIgnore के बीच अंतर?
- 24. ContentObserver और DatasetObserver के बीच अंतर?
- 25. निहित और स्पष्ट इरादों के बीच अंतर
- 26. पैच और diff फ़ाइलों के बीच अंतर
- 27. jQuery.extend और jQuery.fn.extend के बीच अंतर?
- 28. सार्वजनिक और सार्वजनिक स्थैतिक के बीच अंतर?
- 29. apc_add और apc_store के बीच अंतर?
- 30. एक्सएमएल और एक्सएमआई के बीच अंतर?
मुझे लगता है कि मुझे एक बिंदु याद आ रही है; जहां तक मैं पढ़ सकता हूं, हम QSharedDataPointer के साथ कर्मचारी उदाहरण को लागू कर सकते हैं, पहले से ही QSharedPointer के साथ। क्या चालबाजी है? –
QSharedDataPointer कक्षा के कई उदाहरणों के बीच कक्षा डेटा के डेटा को साझा करने के लिए उथली प्रतिलिपि लागू करने के लिए है। संदर्भ दस्तावेज़ क्लास विरासत QSharedDataPointer दिखाता है। तो यह कक्षा के लिए आंतरिक है। QSharedPointer कक्षा के लिए एक बाहरी है और एक वर्ग के एक उदाहरण के लिए एक संदर्भ गिनती सूचक लागू करता है। इसलिए यह एकाधिक पॉइंटर्स को एक ही कक्षा के उदाहरण को इंगित करने की अनुमति देता है। –
QSharedDataPointer कॉपी-ऑन-राइट को कार्यान्वित करने और अपने ऑब्जेक्ट को कॉपी करने के लिए एक निफ्टी तरीका है जब इसे गैर-कॉन्स तरीके से एक्सेस किया जाता है। इसमें सीमा है कि टेम्पलेट तर्क को QSharedData से प्राप्त करने की आवश्यकता है। –