空类可能被默认产生的成员:
- 缺省构造函数
- 拷贝构造函数
- 析构函数
- 赋值运算符
- 取址运算符
- 取址运算符 const
有这么一个空类:
class someClass
{
//ok, it's a empty class
};
看上去这个类太空虚了,啥也没有,不过,实际上它可能有6个默认产生的成员函数!(注意:不是一定会生成的),如下:
4 class someClassA
5 {
6 public:
7 someClassA(){}//缺省构造函数
8 someClassA(const someClassA&){}//拷贝构造函数
9 ~someClassA(){}//析构函数
10 someClassA& operator=(const someClassA&){}//赋值运算符
11 someClassA*operator&(){}//取址运算符
12 const someClassA*operator&()const{}//取址运算符 const
13 };
*所有这些函数都public且inline
另外,这些函数并不是无条件被生成的,唯有当他们被需要的时候才会被编译器创建出来:
void main()
{
someClassA obj1; //缺省构造函数-创建
someClassA obj2(obj1);//复制构造函数-创建
obj1 = obj2; //赋值运算符-创建
someClassA * pA = &obj1; //取地址
const someClassA * pC = &obj1; //取地址const版本
//...
}
当然还有更多的细节,参见《effective C++》3rd 条款5,不多彼条款没有提到取地址的函数
原文链接: https://www.cnblogs.com/cobra520/archive/2012/08/22/2650958.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/60565
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!