Hola Leo, gracias por responder.
El caso es que según el libro es lo mismo.
Mira, esto también funciona:
#include <iostream>
#include <string>
using namespace std;
class CTest {
private:
int a;
public:
CTest() : a(0) {}
CTest(int d) : a(d) {}
CTest(const CTest& obj) {
cout << "constructor copia invocado";
*this = obj;
}
CTest(CTest& obj) {
cout << "constructor copia sin const invocado";
*this = obj;
}
CTest& operator=(const CTest& obj) {
a = obj.a;
cout << "operator= invocado";
return *this;
}
int getA() {
return this->a;
}
};
int main() {
CTest miObj = CTest();
cout << miObj.getA() << endl;
return 0;
}
El problema está cuando quito el constructor copia que recibe la referencia al objeto constante, es decir como puse en el anterior post.
Bueno, haciendo más pruebas, si quito este constructor copia:
CTest(CTest& obj) {
cout << "constructor copia sin const invocado";
*this = obj;
}
Entonces ya funciona todo normalmente.
Lo que saco en claro es que si pongo este último, tengo que poner este otro:
CTest(const CTest& obj) {
cout << "constructor copia sin const invocado";
*this = obj;
}
Pero como digo, no lo llega a ejecutar (por las pruebas que obtengo depurándolo o con la ejecución, mensajes cout ).
¿Qué raro no?