, . , . . . , . . , - local. .
#include<iostream>
using namespace std;
class local
{ public:
local() { cout<<"Constructor of local"<<endl; }
~local() { cout<<"Destructor of local"<<endl; }
};
class A
{ protected:
int n;
public:
A() { cout<<"Constructor of A"<<endl; }
virtual ~A() { cout<<"Destructor of A"<<endl; }
virtual void f()=0;
};
class B: public A
{ public:
local ob;
B(int i=0)
{ cout<<"Constructor of B"<<endl;
if(i) throw 1;
n=i;
}
~B() {cout<<"Destructor of B"<<endl; }
void f(){cout<<"** "<<n<<" **"<<endl;}
};
int main()
{ A *p;
try {
p=new B(1);
p->f();
}
catch(int) {
cout<<"int exception handler"<<endl;
return 1;
}
p->f();
delete p;
return 0;
}
:
Constructor of A
Constructor of local
Constructor of B
int exception handler
Destructor of local
Destructor of A
, local, . , . (try{}) , .
delete p;
. , , , .
, , , .