C++ programming language part- 59 Virtual Base Class
Virtual Base Class
When
the same class is inherited more than once via multiple paths, multiple copies
of the base class members are created in memory. By declaring the base class
inheritance as virtual, only one copy of the base class is inherited.
Program 43_4
//virtual base class.demo
class A //
base class defined
{
public:
void dis()
{
cout<<" The verible of first base
class is a \n ";
}
};
class B:virtual public
A //virtual base class defined
{
public:
void dis()
{
cout<<" The verible of virtual
base class1 is b \n";
}
};
class C:virtual public A //virtual base class
defined
{
public:
void dis()
{
cout<<" The verible of virtual
base class is2 c \n";
}
};
class D:public B,public
C //not possible without class B/C :virtual public A
{
public:
void dis()
{
cout<<" The verible of first base
class is d \n";
}
};
void main()
{ D K; // K is called object
K.A::dis();
// not possible without class B/C :virtual public A
K.B::dis(); //
these are not ambigious
K.C::dis();
K.D::dis(); }
Finally follow the
folling program 43_5
class
A //class defined
{
public:
int p1;
// to
get it from derived class
public:
void data_out()
{cout<<" The
verible of first base class is "<
};
class B:virtual public A //class
defined
{
public:
int p2;
// to get it from derived class
public:
void data_out()
{cout<<"
The verible of second base class is "<
};
class C:virtual public A //class
defined
{
public:
int p3;
// to
get it from derived class
public:
void data_out()
{cout<<" The verible of Tsecond
base class is "<
};
class derived:public B,public C // this is derived class named derived
{
public:
int
p4;
void data_get(int x,int y,int z)
{
p1=x;
p2=y;
p3=z;
p4=x+y+z;}
void data_out()
{cout<<" The total are = "<
};
void main()
{ derived K; //
K is called object
K.data_get(25,50,75);
K.A::data_out(); // these are not
ambigious
K.B::data_out();
K.C::data_out();
K.derived::data_out(); }
Part- 86 assign the content of twostring
জ্ঞানকোষ প্রকাশনী
৩৮/২-ক, বাংলাবাজার (২য় তলা), ঢাকা।
ফোনঃ ৭১১৮৪৪৩, ৮১১২৪৪১, ৮৬২৩২৫১.
কলকাতায় পরিবেশক/প্রাপ্তিস্থান
রিতা ইন্টারন্যাশনাল
৩৬, পি.এন. ব্যানার্জি রোড, কলকাতা
ফোনঃ ২৫১৩৮৩৫৯, ৯৮৩০৪৩৯৬৭৯, +৯১৯৮৩০৪৩৯৬৭৯