know yourselves. information, computer, 7 wonders, various.

Wednesday, November 8, 2017

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


জ্ঞানকোষ প্রকাশনী
৩৮/২-ক, বাংলাবাজার (২য় তলা), ঢাকা।
       ফোনঃ ৭১১৮৪৪৩, ৮১১২৪৪১, ৮৬২৩২৫১.         
                                                     
কলকাতায় পরিবেশক/প্রাপ্তিস্থান
রিতা ইন্টারন্যাশনাল
৩৬, পি.এন. ব্যানার্জি রোড, কলকাতা
ফোনঃ ২৫১৩৮৩৫৯, ৯৮৩০৪৩৯৬৭৯, +৯১৯৮৩০৪৩৯৬৭৯


C++ programming language part- 60 More about Constructor and Destructor


More about Constructor and Destructor

It is possible for a base class, a derived class, or both to contain constructor or destructor. The first base constructor is invocked followed by derived and next derived destructor is called followed by base. Because object is immediatly destroyed in any program. Virtual and non-virtual base class constructor and then derived class constructor are invocked in order of inheritance. Destructor are invocked in the reverse order.

Program 44-1
            class A              //class defined
            { public:
                 A()
                 { cout<<"constructor A invoked\n";  }
                 ~A()
                 { cout<<"destructor A invoked\n";    }
                 };
            class B              //class defined
            { public:
                 B()
                 { cout<<"constructor B invoked\n"; }
                 ~B()
                 { cout<<"destructor B invoked\n"; }
                 };



            class C:virtual public A               //class defined
            { public:
                 C()
                 { cout<<"constructor C invoked\n"; }
                 ~C()
                 { cout<<"destructor C invoked\n";   }
                 };
            class D:virtual public A               //class defined
            { public:
                 D()
                 { cout<<"constructor D invoked\n"; }
                 ~D()
                 { cout<<"destructor D invoked\n"; }
                 };
            class E              //class defined
            { public:
                 E()
                 { cout<<"constructor E invoked\n"; }
                 ~E()
                 { cout<<"destructor E invoked\n";   }
                 };
            class F:public B,public C,public D
             { private:
             E Evar;            // member objet of class E
                 public:
                 F()
                 { cout<<"constructor F invoked\n"; }
                 ~F()
                 { cout<<"destructor F invoked\n";   }
                 };
                 void main()
                 { F Fvar;
                    cout<<"Program termited\n"; }


Program 44_2
            class A             //class defined
            { private:
               int x,y;
               public:
                 A()
                 { cout<<"default constructor A invoked\n";
                 x=29;
                             y=45; }
                 ~A()
                 { cout<<"destructor A invoked\n"; }
                 void disp()
                 { cout<< "class A \n";
                    cout<<"x= "<                 };





            class B:virtual public A           //class defined
            {   public:
                 B()
                 { cout<<"constructor B invoked\n"; }
                 ~B()
                 { cout<<"destructor B invoked\n"; }
                 void disp()
                 { cout<<"class B \n"; }
                 };
            class C:virtual public A           //class defined
            {   public:
                 C()
                 { cout<<"constructor C invoked\n"; }
                 ~C()
                 { cout<<"destructor C invoked\n"; }
                 void disp()
                 { cout<<"class C \n"; }
                 };
               class D:public B,public C                 //class defined
                 { public:
                 D()
                 { cout<<"constructor D invoked\n"; }
                 ~D()
                 { cout<<"destructor D invoked\n"; }
                 };
                 void main()
                 { D K;
                  int p=234;
                  K.A::disp();
                   K.A::~A();
                   K.B::disp();
                 cout<<"Program termited\n";

                 }


Part- 86 assign the content of twostring


জ্ঞানকোষ প্রকাশনী
৩৮/২-ক, বাংলাবাজার (২য় তলা), ঢাকা।
       ফোনঃ ৭১১৮৪৪৩, ৮১১২৪৪১, ৮৬২৩২৫১.         
                                                     
কলকাতায় পরিবেশক/প্রাপ্তিস্থান
রিতা ইন্টারন্যাশনাল
৩৬, পি.এন. ব্যানার্জি রোড, কলকাতা
ফোনঃ ২৫১৩৮৩৫৯, ৯৮৩০৪৩৯৬৭৯, +৯১৯৮৩০৪৩৯৬৭৯