#include "baseclass.hpp"
#include "publicclass.hpp"
int main()
{
{
base_class base1;
public_class pub1(1,2,base1);
base_class base2=public_class::base_class();
pub1.base_show(1);
pub1.callprotected();
}
cout<<"-------------------------------------------------\n";
base_class *bapr=new public_class(0,0,0,0);
delete bapr;
}
#ifndef __baseclass_hh
#define __baseclass_hh
#include "iostream"
using namespace std;
class base_class
{
private :
int a;
int b;
protected:
int IamIsProtectedDate;
public:
base_class(void) { a=b=0;
cout<<"create base object\n";
};
base_class(int a_,int b_) { a=a_;
b=b_;
cout<<"create base object\n";
};
void base_show(void)
{
cout<<"this is base fuc\n";
}
virtual void base_show(int arg);
virtual ~base_class(void);
virtual void base_show(int arg1,int arg2) =0;
};
void base_class::base_show(int arg)
{
if(arg)
cout<<"this base virtual fuc\n";
};
base_class::~base_class(void)
{
cout<<"这是base析构\n";
}
#endif
#ifndef __publicclass_h
#define __publicclass_h
#include "baseclass.hpp"
#include "iostream"
class public_class : public base_class
{
private:
int c;
int d;
public:
void show(void) {std::cout<<c<<std::endl;
};
public_class(int c,int d,int a,int b);
public_class(int c,int d,base_class & tp);
virtual void base_show(int arg);
~public_class();
void callprotected()
{
cout<<"我访问基类protected数据~ :"<<IamIsProtectedDate<<endl;
};
};
public_class::~public_class()
{
cout<<"这时派生类析构\n";
};
public_class::public_class(int c,int d,int a,int b):base_class(a,b)
{
c=d=0;
cout<<"create public_class\n";
};
public_class::public_class(int c,int d,base_class & tp):base_class(tp)
{
c=d=0;
cout<<"create public_class\n";
};
void public_class::base_show(int arg)
{
if(arg)
cout<<"this is virtual fuc from base\n";
}
#endif