I am still learning C++ and trying to understand it. I was looking through some code and saw:
point3(float X, float Y, float Z) :
x(X), y(Y), z(Z) // <----- what is this used for
{
}
What is the meaning of the "x(X), y(Y), z(Z)" sitting beside the constructor's parameters?
It's a way of invoking the constructors of members of the point3 class. if x,y, and z are floats, then this is just a more efficient way of writing this
point3( float X, float Y, float Z):
{
x = X;
y = Y;
z = Z;
}
But if x, y & z are classes, then this is the only way to pass parameters into their constructors
In your example point3
is the constructor of the class with the same name (point3
), and the stuff to the right of the colon :
before the opening bracket {
is the initialization list, which in turn constructs (i.e. initializes) point3
's member variables (and can also be used to pass arguments to constructors in the base class[es], if any.)
Member initialization as others have pointed out. But it is more important to know the following:
When the arguments are of the type float or other built-in types, there's no clear advantages except that using member initialization rather than assignment (in the body of the constructor) is more idiomatic in C++.
The clear advantage is if the arguments are of user-defined classes, this member initialization would result in calls to copy constructors as opposed to default constructors if done using assignments (in the constructor's body).
精彩评论