C++ में Copy-and-Swap इडियम क्या है और इसका उपयोग कब करें?
सभी को नमस्ते! मैंने C++ सीखना शुरू किया है और assignment operator को सही तरीके से override करने का प्रयास कर रहा हूँ। मुझे पता है कि self-assignment की जाँच करनी होती है और पुराने resources को free करना होता है, लेकिन मेरा कोड बहुत बुरा दिखता है और मैं लगातार गलतियाँ करता हूँ।
यहाँ dynamic array के साथ काम करने के लिए मेरे class का उदाहरण है:
```cpp
class MyArray {
int* data;
size_t size;
public:
MyArray(size_t s) : size(s), data(new int[s]) {}
~MyArray() { delete[] data; }
// समस्याग्रस्त assignment operator
MyArray& operator=(const MyArray& other) {
if (this != &other) { // self-assignment की जाँच
delete[] data; // पुराने data को free करें
size = other.size;
data = new int[size]; // नई memory allocate करें
std::copy(other.data, other.data + size, data);
}
return *this;
}
// Copy constructor भी है
MyArray(const MyArray& other) : size(other.size), data(new int[other.