C++的空类真的空吗??

叁歲伎倆 2022-11-28 13:28 273阅读 0赞

对于c++中的的一个空类,例如:

  1. class EMPTY
  2. {
  3. };

虽然类中没有定义任何的数据成员以及成员函数,但是为了进行一些默认的操作,编译器会加入以下一些成员函数,这样使得类的对象有一些通用的功能。

  • 默认构造函数和复制构造函数,它们被用来创建类的对象
  • 析构函数
  • 赋值函数,用于类的对象的赋值过程
  • 取值函数,当类的对象进行取地址时,此函数被调用

所以一个完整的EMPTY类如下:

  1. class EMPTY
  2. {
  3. public:
  4. EMPTY(); //默认构造函数
  5. EMPTY(const EMPTY&); //赋值构造函数
  6. ~EMPTY(); //析构函数
  7. EMPTY& operator=(const EMPTY&); //赋值函数
  8. EMPTY* operator&(); //取址函数
  9. };

对于复制构造函数,下面三种情况需要调用复制构造函数:

  1. 一个对象以值传递的方式传入函数体;
  2. 一个对象以值传递的方式从函数体返回;
  3. 以一个对象初始化另一个对象。

发表评论

表情:
评论列表 (有 0 条评论,273人围观)

还没有评论,来说两句吧...

相关阅读

    相关 一个大小?

    问题源于【剑指offer】P23 1、定义一个空类型,里面没有任何成员变量和成员函数。对该类型求sizeof 结果? 结果为1 。 2、为什么不是0?  

    相关 C/C++编程:优化

    C++类常为”空“,这就意味着在运行期其内部表示不耗费任何内存。这常见于只包含类型成员,非虚成员函数和静态数据成员的类,而非静态数据成员、虚函数和虚基类会在运行期耗费内存 即

    相关 大小

    一、类的大小是类中所有成员变量大小之和,而且像结构体一样要遵循内存对齐的规则。 内存对齐原因是用空间换时间的做法,CPU将内存看做一块一块的,一块可以是2、4、8、16个字节