Qu'est-ce que la sémantique de déplacement (move semantics) en C++11 et comment fonctionne-t-elle ?
Bonjour à tous ! J'ai commencé à étudier C++11 et je tombe constamment sur le terme "move semantics", mais je n'arrive pas à comprendre complètement ce que c'est et à quoi ça sert. J'ai lu différents articles, mais partout les exemples sont un peu abstraits.
J'ai ce code. Supposons que j'écris une classe qui gère un tableau dynamique :
```cpp
#include
#include
class MyArray {
public:
int* data;
size_t size;
MyArray(size_t s) : size(s) {
data = new int[size];
std::cout << "Constructor called\n";
}
MyArray(const MyArray& other) : size(other.size) {
data = new int[size];
std::memcpy(data, other.data, size * sizeof(int));
std::cout << "Copy constructor called\n";
}
MyArray& operator=(const MyArray& other) {
if (this != &other) {
delete[] data;
size = other.size;
data = new int[size];
std::memcpy(data, other.data, size * sizeof(int));
s