He oído que la ventaja de usar listas de inicialización en el constructor sería que no habrá copias adicionales de los objetos de tipo de clase. Pero, ¿qué significa para el siguiente código en el constructor de clase T? Si comento la tarea y uso las listas de inicialización, ¿cuál sería la diferencia?Listas de inicialización en el constructor
#include <iostream>
using std::cout;
using std::endl;
using std::ostream;
class X {
public:
X(float f_x = 0, float f_y = 0):x(f_x), y(f_y) {}
~X() {}
X(const X& obj):x(obj.x), y(obj.y) {}
friend ostream& operator << (ostream &os, X &obj);
private:
float x;
float y;
};
ostream& operator << (ostream &os, X &obj)
{ os << "x = " << obj.x << " y = " << obj.y; return os;}
class T {
public:
T(X &obj) : x(obj) { /* x = obj */ }
~T() { }
friend ostream& operator << (ostream &os, T &obj);
private:
X x;
};
ostream& operator << (ostream &os, T &obj)
{ os << obj.x; return os; }
int main()
{
X temp_x(4.6f, 6.5f);
T t(temp_x);
cout << t << endl;
}
No estoy seguro de si es relevante a su pregunta, pero probablemente querrá T (X const y obj). –
@ K-ballo: Sí, lo olvidé, gracias. – user767451