Declaring Variables Inside an If-Condition

Declaring Variables Inside an If-Condition

C++ allows you to declare variables just before their use rather than at the top of the enclosing block. Thus, it is legal to declare a variable inside the condition of an if-statement:

 class Base {/*..*/};class Derived: public Base {/*..*/};void func (Base& b){  if ( Derived *pd = dynamic_cast  (&b) ) //declaration inside if-condition  {    //dynamic_cast was successful; use pd here    return;  }//pd goes out of scope at this point   //otherwise dynamic_cast failed; variable pd is not in scope}

The advantage of declaring the pointer pd locally is obvious: it is always initialized with an appropriate value, and it isn’t visible to other parts of the program that should not use it.


Share the Post: