- #include <iostream>
- #include <string>
-
- using namespace std;
- class Base
- {
- public:
-
- int m_a;
- Base(){cout<<"Base-ctor"<<endl;}
- ~Base(){cout <<"Base-dtor"<<endl;}
- void g2(int i=10) {cout <<"Base::g2()"<<i<<endl;}
-
- private:
- int m_b;
- };
-
-
- class Derived : public Base
- {
- public:
- Derived(){cout <<"Derived-ctor"<<endl;}
- ~Derived(){cout<<"Derived-dtor"<<endl;}
-
-
- virtual void g(int i=20){cout<<"Derived::g()"<<i<<endl;}
- };
-
-
-
- class A
- {
- public:
- double m_d;
-
- virtual void func1(){}
- };
-
- class A1:public A{};
- class A2:public A{};
-
-
- class B : public A{};
-
-
- class C : public virtual A1,public virtual A2{};
-
-
- class D : public A1,public A2{};
-
- int main()
- {
- Base b;
- Derived d;
- Base *pb = new Derived;
-
- cout <<sizeof(Base)<<" BASE"<<endl;
- cout <<sizeof(b)<<"base"<<endl;
- cout <<sizeof(*pb)<<"(Base)*(&Derived)"<<endl;
- cout <<sizeof(pb)<<"&Derived"<<endl;
- cout <<sizeof(Derived) <<"DERIVED"<<endl;
- cout <<sizeof(d) <<"derived" <<endl;
- cout <<"sizeof(A):"<<sizeof(A)<<endl;
- cout <<"sizeof(A1):"<<sizeof(A1)<<endl;
- cout <<"sizeof(A2):"<<sizeof(A2)<<endl;
- cout <<"sizeof(B):"<<sizeof(B)<<endl;
- cout <<"sizeof(C):"<<sizeof(C)<<endl;
- cout <<"sizeof(D):"<<sizeof(D)<<endl;
- getc(stdin);
- return 0;
- }
(s_a_n_) |