连接:条款五
1.空类占几个字节及里面有什么
常见面试题:“一个空类的大小是多少”
答:一字节(为了占位做标记)
空类编译器会默认生成四大类:默认构造函数,析构函数,拷贝构造函数和赋值函数
//表面上只写了
Class EmptyClass
{
};
//暗地里编译器生成
Class EmtpyClass
{
public:
// 构造函数
EmtpyClass(){}
// 析构函数
~EmptyClass(){}
// 拷贝构造函数
EmptyClass(const EmptyClass& obj)
{
…
}
// 赋值运算符重载
EmptyClass& operator= (const EmptyClass& obj)
{
…
}
};
2.什么时候调用拷贝构造函数或赋值函数
看有没有新对象的产生
EmptyClass a(b); // 调用的是拷贝构造函数
EmptyClass a = b; // 调用的是拷贝构造函数
EmptyClass a;
a = b; // 调用的是赋值运算符
例子1,2都是有新对象产生,顾拷贝构造函数。例三是先生成了对象a再赋值,顾调用赋值运算符
本文探讨了C++中空类的内存占用,指出空类通常占一字节,并解释了编译器隐式生成的默认构造函数、析构函数、拷贝构造函数和赋值运算符。此外,还阐述了何时调用拷贝构造函数和赋值运算符,并提及了const成员和引用如何影响这些函数的生成。最后,提到了编译器不会为包含const或引用成员的类生成默认构造函数和赋值运算符的情况。
3121

被折叠的 条评论
为什么被折叠?



