In C++, class variables are initialized in the same order as they appear in the class declaration.
Consider the below code.
#include<iostream>
using namespace std;
class Test {
private :
int y;
int x;
public :
Test() : x(10), y(x + 10) {}
void print();
};
void Test::print()
{
cout<< "x = " <<x<< " y = " <<y;
}
int main()
{
Test t;
t.print();
getchar ();
return 0;
}
|
The program prints correct value of x, but some garbage value for y, because y is initialized before x as it appears before in the class declaration.
So one of the following two versions can be used to avoid the problem in above code.
class Test {
private :
int x;
int y;
public :
Test() : x(10), y(x + 10) {}
void print();
};
|
class Test {
private :
int y;
int x;
public :
Test() : x(y-10), y(20) {}
void print();
};
|
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.