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.
Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape,
GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out -
check it out now!
Last Updated :
09 Jun, 2017
Like Article
Save Article