C++ 类的存储空间及数据成员变量覆盖
2017-03-10 17:35
330 查看
问题:
代码:
类的定义代码:
测试函数代码:
演示结果:
扩展:
代码:
类的定义代码:
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
扩展:
相关文章推荐
- C++中如何通过无成员变量的空类存储数据
- C++中RTTI动态类型识别、静态成员、变量的四种存储方式
- C++覆盖成员变量、类变量
- C++第4周项目5 - 数组作数据成员(扩展1动态开辟空间)
- C++ 静态数据成员 成员函数 静态变量 全局变量(2)
- 转:C语言中的static变量和C++静态数据成员(static member)
- c++各种数据类型所占存储空间大小
- 21天学通c++之第二周 指针 8.6 访问自由存储区中对象的成员数据
- C语言中的static变量和C++静态数据成员(static member)
- C++ 利用类的静态成员特性定义全局变量来存储信息
- 关于C++ 类数据成员初始化的一点总结【为什么类定义中不能初始化成员变量】
- C++覆盖成员变量、类变量
- C++防灾——为指针成员分配专门的存储空间
- C++特殊数据类型成员变量的初始化
- C++:静态成员函数,静态数据成员,成员函数存储方式
- C++覆盖成员变量、类变量
- C++防灾——为指针成员分配专门的存储空间
- C++中 没有数据成员的类的对象所占的内存空间大小问题
- C++:静态成员函数,静态数据成员,成员函数存储方式
- C++继承中覆盖和隐藏基类成员变量或成员函数