C++中,系统默认生成缺省的构造函数,拷贝构造函数,赋值函数。一个没有任何显示声明的类什么时候不是空类?当C++编译器编译通过它的时候,如果你没有任何的显示的声明,编译器就会声明它自己的一些函数版本。这些函数是:一个拷贝构造函数,一个赋值运算符,一个析构函数,一对取址运算符。另外,如果你没有声明任何构造函数,它也将为你声明一个缺省构造函数。所有这些函数都是公有的(public)。
此外,在C++中,struct和class声明的结构几乎是一样的。只是在struct中,默认的访问权限是public,而在 class中,默认的访问权限是private。
下面类的声明:
class Nothing
{
};
和下面类的声明是等价的:
class Nothing
{
public:
Nothing();
Nothing(const Nothing& rhs);
~Nothing();
Nothing& operator=(const Nothing& rhs);
Nothing* operator&();
const Nothing* operator&() const;
};
下表1是这些函数被调用的情况:
表1 Nothing类函数被调用情况
const Nothing n1; |
// 缺省构造函数,析构函数 |
Nothing n2(n1); |
// 拷贝构造函数 |
n2 = n1; |
// 赋值运算符 |
Nothing *pn2 = &n2; |
// 取址运算符(非const) |
const Nothing *pn1 = &n1; |
// 取址运算符(const) |
Copyright 2011-2020 © MallocFree. All rights reserved.