问题:
代码:
类的定义代码:
class Empty { }; class EmptyNonVirtual { public: EmptyNonVirtual() {} ~EmptyNonVirtual() {} }; class EmptyVirtual { public: EmptyVirtual() {} virtual~EmptyVirtual() {} }; class Base1 { public: Base1() {} void print() {} }; class Base2 { public: short m; Base2() { m = 3; std::cout << "construct Base2.m=" << this->m << std::endl; } void print() { std::cout << "print m=" << this->m << std::endl; } }; class F1 : public Base2 { public: short m; F1() { m = 4; std::cout << "construct F1.m=" << this->m << std::endl; } }; class F2A: public F1 { public: char* c; }; class F2B : public F1 { private: char str; };测试函数代码:
int test() { // std::cout << "Empty size = " << sizeof (Empty) << std::endl; std::cout << "EmptyNonVirtual size = " << sizeof (EmptyNonVirtual) << std::endl; std::cout << "EmptyVirtual size = " << sizeof (EmptyVirtual) << std::endl; // std::cout << "Base1 size = " << sizeof (Base1) << std::endl; std::cout << "Base2 size = " << sizeof (Base2) << std::endl; std::cout << "F1 size = " << sizeof (F1) << std::endl; std::cout << "F2A size = " << sizeof (F2A) << std::endl; std::cout << "F2B size = " << sizeof (F2B) << std::endl; // F1 f1; f1.print(); std::cout << "f1.m=" << f1.m << std::endl; // return 0; }演示结果:
d:\mylaf\project\vs2013\project_code\testvirtualinputv2\mainvirtualinputv2.cc Empty size = 1 EmptyNonVirtual size = 1 EmptyVirtual size = 4 Base1 size = 1 Base2 size = 2 F1 size = 4 F2A size = 8 F2B size = 6 construct Base2.m=3 construct F1.m=4 print m=3 f1.m=4扩展:
