基础回顾:c++空类

1.c++空类包含什么?

  1. 默认构造函数:如果没有定义任何构造函数,编译器会自动生成一个默认构造函数。

  2. 默认析构函数:编译器会自动生成一个默认析构函数。

  3. 复制构造函数:编译器会自动生成一个复制构造函数。

  4. 复制赋值运算符:编译器会自动生成一个复制赋值运算符。

  5. 移动构造函数(C++11及以后):在C++11及以后的版本中,如果没有定义复制操作或析构函数,编译器会自动生成移动构造函数。

  6. 移动赋值运算符(C++11及以后):在C++11及以后的版本中,如果没有定义复制操作或析构函数,编译器会自动生成移动赋值运算符。

  7. 隐式定义的 this 指针:每个非静态成员函数都有一个隐式的 this 指针。

  8. 类型信息:编译器会为类生成必要的类型信息。

  9. 对齐信息:类会有对齐要求,即使是空类

2.c++空类大小

        虽然空类没有任何成员变量,但它并非完全没有大小。C++ 标准规定,任何对象(包括空类的实例)都必须有非零大小。这是为了确保在数组中,每个对象都有唯一的地址。

        在大多数编译器和平台上,空类的大小是 1 字节。分配 1 字节是为了满足最小大小原则。这个字节通常不存储任何有意义的信息,仅用于为对象提供唯一的内存地址。

        可以通过代码查看空类大小:

#include<iostream>
using namespace std;
class EmptyClass{};
int main(){
    cout << "Size of EmptyClass :" << sizeof(EmptyClass) << "byte(s)" << endl; 
    return 0;
}

其中,sizeof 是 C++ 中的一个运算符,用于获取类型或表达式的字节大小。其返回一个 size_t 类型(通常是无符号整型)的值,表示字节数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值