1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
#include <iostream>
using namespace std;
class OriginalBaseClass {
public:
OriginalBaseClass(long double data1 = 1, long int data2 = 1) : data1_(data1), data2_(data2) {}
private:
long double data1_;
long int data2_;
};
class Base : public virtual OriginalBaseClass {
public:
Base(long int data1 = 0, long int data2 = 0) : data1_(data1), data2_(data2), bools_(0) {}
virtual ~Base();
void Initialize(long int anchor, long int ypc, long int lypc);
bool* bools_;
protected:
virtual bool Rule(long int year, long int anchor, long int ypc, long int lypc) { return false; }
private:
long int data1_;
long int data2_;
};
Base::~Base()
{
cout << "In Base destructor\n";
if ( bools_ ) delete bools_;
}
void Base::Initialize(long int anchor, long int ypc, long int lypc)
{
bools_ = new bool[ypc];
for ( short int i = 0 ; i < ypc ; i++ )
bools_[i] = this->Rule(anchor + i, anchor, ypc, lypc);
}
class Derived_A : public virtual Base {
public:
Derived_A() {}
};
class Derived_B : public Derived_A {
public:
Derived_B() : OriginalBaseClass(), Base(4, 1) { Initialize(1, 4, 1); }
protected:
virtual bool Rule(long int year, long int anchor, long int ypc, long int lypc);
};
bool Derived_B::Rule(long int yr, long int a, long int ypc, long int lypc)
{
return false;
}
int main()
{
Derived_B Derb;
}
|