//: C06:Nojump.cpp
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 2000
// Copyright notice in Copyright.txt
// Can't jump past constructors

class X
{

public:
X();

};

X::X() {}

/* All'interno della funzione sottostante, se viene attivato il "goto", il costruttore ("X") puņ essere saltato (lo stesso per lo "switch"). Questo genera un errore, infatti nel caso dell'"if" se la condizione č soddisfatta viene eseguito il "goto" saltando la dichiarazione dell'oggetto. In questo modo l'oggetto non puņ essere utilizzato in quanto non dichiarato. Quindi in generale non si devono mettere costruttori all'interno di condizioni */

void f(int i)
{

if(i < 10)
{}
/*! goto jump1; // Error: goto bypasses init */

/* Constructor called here */
X x1; 
jump1:
switch(i)
{

case 1 :

X x2; /* Constructor called here */
break;
/*! case 2 : // Error: case bypasses init */
/* Constructor called here */
X x3; 
break;

}



int main()
{

f(9);
f(11);

}///:~