#include <iostream>
using namespace std;
class A{
protected:
int a;
public:
A(){
cout<<"A()"<<endl;
}
A(int _a):a(_a){
cout<<"A()"<<endl;
}
~A(){
cout<<"~A()"<<endl;
}
virtual void print(){
cout<<"print()"<<endl;
cout<<a<<endl;
}
void print2(){
cout<<"print2()"<<endl;
cout<<a<<endl;
}
};
class B:public A
{
public:
B(int _a,int _b):A(_a),b(_b){
cout<<"B()"<<endl;
}
~B(){
cout<<"~B()"<<endl;
}
virtual void print(){
cout<<"print()"<<endl;
cout<<a<<endl;
cout<<b<<endl;
}
void print2(){
cout<<"print2()"<<endl;
cout<<a<<endl;
cout<<b<<endl;
}
private:
int b;
};
void func2(A p){
p.print();
p.print2();
}
void func(A& p){
p.print();
p.print2();
}
void fun(A* p){
p->print();
p->print2();
}
void main(){
{
B b(1,2);
A a;
a=b;
A &y=b;
A*p;
p=&a;
p=&b;
func2(b);
}
system("pause");
}