#include <iostream>
using namespace std;
class Test{
public:
Test(){
cout<<"Test()"<<endl;
cnt+=1;
}
~Test(){
cout<<"~Test()"<<endl;
}
static void show(){
cout<<cnt<<endl;
}
void set(int ii){
i=ii;
}
protected:
void set2(int ii){
i=ii;
}
private:
static int cnt;
int i;
};
class B:public Test{
public:
B(){
cout<<"B"<<endl;
cnt+=2;//if there's no declaration of cnt in class B,
//this line is wrong as cnt is a private variable
//of Test
}
~B(){
cout<<"~B()"<<endl;
}
static void show2(){
cout<<cnt<<endl;
}
void use_set(){
set(44);
set2(55);
}
private:
static int cnt;
};
int Test::cnt=0;
int B::cnt=0;
int main(){
B b1,b2,b3;
Test::show();
B::show2();
// b1.set2(2); //wrong,as set2() is protected
return 0;
}