Riporto parte del codice:
class Vector3
{
public:
// Public representation: Not many options here.
float x,y,z;
// Constructors
// Default constructor leaves vector in
// an indeterminate state
Vector3() {}
// Copy constructor
Vector3(const Vector3 &a) : x(a.x), y(a.y), z(a.z) {}
// Construct given three values
Vector3(float nx, float ny, float nz) : x(nx), y(ny), z(nz) {} //<----- QUESTO E' IL NOSTRO CASO
// Standard object maintenance
// Assignment. We adhere to C convention and
// return reference to the lvalue
Vector3 &operator =(const Vector3 &a)
{
x = a.x; y = a.y; z = a.z;
return *this;
}
ora quelle x, y e z che stanno prima delle parentesi si riferiscono alle rispettive proprietà della classe Vector3? Quindi è un'operazione di assegnazione? E per quale motivo non si scrive semplicemente x=a.x (idem per y e z) ?
I costruttori poi sono sempre inizializzati utilizzando i due punti ":" prima del corpo? In java sono inizializzati come normali funzioni, mettendo il corpo tra parentesi graffe, quei due punti nn li ho mai visti.