Tuesday, February 28, 2012

What is initialization list in C++?

     Generally in C++, we will initalise the variables in constructors using assignment operator. But there are some scenarios like const and reference variables, where we need to initialise at the time of declaration.  Assignement operator will not work for these. C++ provides new feature initialisation list to do this. The initialisation list is required in inheritance and compostion for initialising data members.
     The Initialisation list should add after the constructor, starts with a colon (:) and each variable with the value enclosed in brackets and separated by comma. It will not end with semicolon(;). If you use initialisatin list, no need off explicit assignment  of the variables in constructor. See the sample code below.

class inList{

    private:
        int x,y;
    public:
        inList():x(10),y(20) //initialisation list
        {
            //nothing
        }
        inList(int aX, int aY):x(aX),y(aY) // initialization list
        {
            //nothing
        }
};

int main()
{
    inList l;
    inList iL(100,200);

}

the above two constructors are same as below.

inList()
{
   x=10;
   y=20; 
}

inList(int aX, int aY)
{
   x=aX;
   y=aY;
}

Example for Inheritance:

class inList{

    private:
    public:
        int x,y;
        inList():x(10),y(20)
        {
            //nothing
        }
        inList(int aX, int aY):x(aX),y(aY)
        {
            //nothing
        }
};

class inListDerive: public inList
{
    private:
        int z;
    public:
        inListDerive():z(10),inList(20,30)
        {
            //nothing
        }
        inListDerive(int aZ):z(aZ),inList(20,30)
        {
            //nothing
        }
};
int main()
{
    inListDerive dL; 
    inListDerive dL1(100);

}
    
P.S: To see initialising const variable using initialisation list click here.

No comments:

Popular Posts