Member initializer list is useful in case of initializing member variables of const or reference type, and for class has no member initialization inside its default constructor.
Example:
#include <iostream>
using namespace std;
class Point {
private:
int _x;
int _y;
public:
Point(int x, int y): _x(x), _y(y) {};
void print();
};
void Point::print()
{
cout<<"x: "<<_x<<" y: "<<_y<<endl;
}
int main() {
Point *p = new Point(3,4);
p->print();
return 0;
}
We can write our constructor in two ways as below.
The difference between them is that in Method B, the 'initialization' for _x and _y happened after object is created and their values are actually changed by assignment operation. While in Method A _x and _y is initialized before constructor runs.
Method A:
public:
Point(int x, int y): _x(x), _y(y) {};
Method B:
public:
Point(int x, int y):
{
_x = x;
_y = y;
}
No comments:
Post a Comment