उदाहरण के लिए, मैं एक वर्ग घोषित करने के लिए चाहते हैं, लेकिन मैं चाहता हूँ ग्राहक नहीं करने के लिए प्रतिलिपि निर्माता का उपयोग कर सकेंगे (या असाइनमेंट ऑपरेटर कॉपी)एक कन्स्ट्रक्टर निजी और = हटाने के बीच अंतर क्या है?
निम्न दो के दोनों प्रतिलिपि निर्माता के उपयोग की अनुमति नहीं है:
1.
class Track
{
public:
Track(){};
~Track(){};
private:
Track(const Track&){};
};
2.
class Track
{
public:
Track(){};
~Track(){};
Track(const Track&)=delete;
};
क्या इनमें से एक तरीका दूसरे की तुलना में "अधिक सही" है या बराबर है? क्या कोई दुष्प्रभाव है?
//Does not compile with both the above ways
int main()
{
Track l;
Track p(l);
}
क्या यह संकलित 'ट्रैक (कॉन्स ट्रैक और) = हटाएं; '??? –
@EdHeal हाँ, यह करता है। जी ++ 4.7 –
पहले 'हटाएं' के इस तरह के उपयोग को नहीं देखा। भाषा विस्तार? यदि हां, पहले की तुलना में निश्चित रूप से "अधिक सही" – kotlomoy