आप एक नाशक के बिना एक वर्ग है, तो:मानक मुझे विनाशकों के बिना वर्ग आवंटित करने के लिए क्यों मुक्त करता है?
struct A {
~A() = delete;
};
मानक नहीं करता है मुझे "स्थानीय रूप से" उस वर्ग का एक उदाहरण का आवंटन:
int main()
{
A a; //error
}
लेकिन ऐसा लगता है जैसे कि यह करता है, तो ठीक है मैं आवंटन पर मुफ्त की दुकान है कि:
int main()
{
a *p = new A();
}
जब तक मैं न फोन है कि सूचक पर हटाएँ:
+०१२३५१६४१०int main()
{
a *p = new A();
delete p; //error
}
तो मेरा सवाल यह है कि मानक मुझे बिना किसी विनाशक के कक्षा क्यों दे सकता है अगर मैं इसे फ्री-स्टोर पर आवंटित करता हूं? मुझे लगता है कि इसके लिए कुछ उपयोग के मामले हैं? लेकिन वास्तव में क्या?
सी ++ में आप कई चीजें कर सकते हैं, जो आपको नहीं करना चाहिए। यह उनमें से एक होगा। –
अब मैं इस बारे में उत्सुक हूं ... – callyalater
ऐसा नहीं है कि मानक निर्धारित करता है कि स्मृति लीक वर्जित हैं। शायद एक और दिलचस्प सवाल होगा: मानक विनाशकों को हटाने की अनुमति क्यों देता है? – jamesdlin