Quiz Constructeurs de copie, de déplacement, desructeurs
Qu'affiche le code suivant ?
#include <iostream>
using namespace std;
class C {
int i;
public:
C() : i(0) {
cout << "D" << i;
}
C(int _i) : i(_i) {
cout << "I" << i;
}
C(const C& _c) : i(_c.i) {
cout << "C" << i;
}
C& operator= (const C& _c) {
i = _c.i; cout << "c" << i; return *this;
}
C(C&& _c) : i(_c.i) {
cout << "M" << i; _c.i = 0;
}
C& operator= (C&& _c) {
i = _c.i; cout << "m" << i; _c.i = 0; return *this;
}
~C() {
cout << "d" << i;
}
};
int main() {
C c;
} D0d0
Qu'affiche le code suivant ?
#include <iostream>
using namespace std;
class C {
int i;
public:
C() : i(0) {
cout << "D" << i;
}
C(int _i) : i(_i) {
cout << "I" << i;
}
C(const C& _c) : i(_c.i) {
cout << "C" << i;
}
C& operator= (const C& _c) {
i = _c.i; cout << "c" << i; return *this;
}
C(C&& _c) : i(_c.i) {
cout << "M" << i; _c.i = 0;
}
C& operator= (C&& _c) {
i = _c.i; cout << "m" << i; _c.i = 0; return *this;
}
~C() {
cout << "d" << i;
}
};
int main() {
C c = 5;
} I5d5
Qu'affiche le code suivant ?
#include <iostream>
using namespace std;
class C {
int i;
public:
C() : i(0) {
cout << "D" << i;
}
C(int _i) : i(_i) {
cout << "I" << i;
}
C(const C& _c) : i(_c.i) {
cout << "C" << i;
}
C& operator= (const C& _c) {
i = _c.i; cout << "c" << i; return *this;
}
C(C&& _c) : i(_c.i) {
cout << "M" << i; _c.i = 0;
}
C& operator= (C&& _c) {
i = _c.i; cout << "m" << i; _c.i = 0; return *this;
}
~C() {
cout << "d" << i;
}
};
int main() {
C c;
c = 5;
} D0I5m5d0d5
Qu'affiche le code suivant ?
#include <iostream>
using namespace std;
class C {
int i;
public:
C() : i(0) {
cout << "D" << i;
}
C(int _i) : i(_i) {
cout << "I" << i;
}
C(const C& _c) : i(_c.i) {
cout << "C" << i;
}
C& operator= (const C& _c) {
i = _c.i; cout << "c" << i; return *this;
}
C(C&& _c) : i(_c.i) {
cout << "M" << i; _c.i = 0;
}
C& operator= (C&& _c) {
i = _c.i; cout << "m" << i; _c.i = 0; return *this;
}
~C() {
cout << "d" << i;
}
};
int main() {
C c = C(5);
} I5d5
Qu'affiche le code suivant ?
#include <iostream>
using namespace std;
class C {
int i;
public:
C() : i(0) {
cout << "D" << i;
}
C(int _i) : i(_i) {
cout << "I" << i;
}
C(const C& _c) : i(_c.i) {
cout << "C" << i;
}
C& operator= (const C& _c) {
i = _c.i; cout << "c" << i; return *this;
}
C(C&& _c) : i(_c.i) {
cout << "M" << i; _c.i = 0;
}
C& operator= (C&& _c) {
i = _c.i; cout << "m" << i; _c.i = 0; return *this;
}
~C() {
cout << "d" << i;
}
};
C f(int i) {
C c(i);
return c;
}
int main() {
C c;
c = f(4);
} D0I4m4d0d4
Qu'affiche le code suivant ?
#include <iostream>
using namespace std;
class C {
int i;
public:
C() : i(0) {
cout << "D" << i;
}
C(int _i) : i(_i) {
cout << "I" << i;
}
C(const C& _c) : i(_c.i) {
cout << "C" << i;
}
C& operator= (const C& _c) {
i = _c.i; cout << "c" << i; return *this;
}
C(C&& _c) : i(_c.i) {
cout << "M" << i; _c.i = 0;
}
C& operator= (C&& _c) {
i = _c.i; cout << "m" << i; _c.i = 0; return *this;
}
~C() {
cout << "d" << i;
}
};
C f(int i) {
C c(i);
return c;
}
int main() {
C c = f(4);
} I4d4