//============================================================================ // Name : DunamicCompile.cpp // Author : 齐保元 // Version : // Copyright : Your copyright notice // Description : Hello World in C++, Ansi-style //============================================================================ #include <iostream> using namespace std; class shape { public: void draw() { cout << "i am shape" << endl; } void fun() { draw(); } }; class circle: public shape { public: void draw() { cout << "i am a circle" << endl; } }; class shape_novirtual { int a; public: void draw() { cout << "shape_novirtual::draw()" << endl; } }; class shape_virtual1 { int a; public: virtual void draw() { cout << "shape_virtual1::draw()" << endl; } }; class shape_virtual2 { //int a; public: virtual void draw() { cout << "shape_virtual2::draw()" << endl; } virtual void draw1() { cout << "shape_virtual2::draw1()" << endl; } }; class shape1 { public: virtual void draw() { cout << "shape1::draw()" << endl; } virtual void area() { cout << "shape1::area()" << endl; } void fun() { draw(); area(); } }; class circle1: public shape1 { public: void draw() { cout << "circle::draw()" << endl; } void adjust() { cout << "circle::adjust()" << endl; } }; int main() { class circle oneshape; oneshape.fun(); cout << "sizeof(int)" << sizeof(int) << endl; cout << "sizeof(shape_novirtual)" << sizeof(shape_novirtual) << endl; cout << "sizeof(void*)" << sizeof(void*) << endl; cout << "sizeof(shape_virtual1)" << sizeof(shape_virtual1) << endl; cout << "sizeof(shape_virtual2)" << sizeof(shape_virtual2) << endl; shape1 oneshape1; oneshape1.fun(); circle1 circleshape1; shape1 &baseshape1 = circleshape1; baseshape1.fun(); return 0; }