为什么会输出以下内容1?#include <iostream>class Test{};int main(){ std::cout << sizeof(Test); return 0;}
3 回答
眼眸繁星
TA贡献1873条经验 获得超9个赞
C ++标准保证任何类的大小至少为一个。C ++标准规定,任何对象都不应与另一个对象具有相同的内存地址。这样做有几个很好的理由。
为了保证new始终会返回指向不同内存地址的指针。
避免被零除。例如,指针算术(其中许多由编译器自动完成)涉及除以sizeof(T)。
但是请注意,这并不意味着一个空的基类将为派生类的大小加1:
struct Empty { };
struct Optimized : public Empty {
char c;
};
// sizeof(Optimized) == 1 with g++ 4.0.1
Bjarne Stroustrup也谈到了这一点。
尚方宝剑之说
TA贡献1788条经验 获得超4个赞
没有任何数据成员和成员函数的类,此类类型的类称为空类。空类的对象的大小始终为1个字节。
当我们那时创建任何类的对象时,对象总是具有3个特征,即
州
行为
身分识别
那时我们创建空类的对象时,该对象的状态为空。该对象的行为也不是什么,但是编译器会为该对象分配一个唯一的地址。计算机中的内存始终以字节的形式组织,在对象地址位置可用的最小内存为1字节。这就是为什么空类的对象的大小为1个字节的原因。
- 3 回答
- 0 关注
- 528 浏览
添加回答
举报
0/150
提交
取消