标题:空类:缺省的构造函数,拷贝构造函数,赋值函数


C++中,系统默认生成缺省的构造函数,拷贝构造函数,赋值函数。一个没有任何显示声明的类什么时候不是空类?当C++编译器编译通过它的时候,如果你没有任何的显示的声明,编译器就会声明它自己的一些函数版本。这些函数是:一个拷贝构造函数,一个赋值运算符,一个析构函数,一对取址运算符。另外,如果你没有声明任何构造函数,它也将为你声明一个缺省构造函数。所有这些函数都是公有的(public)。

 

此外,在C++中,structclass声明的结构几乎是一样的。只是在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)




看文字不过瘾?点击我,进入周哥教IT视频教学
麦洛科菲长期致力于IT安全技术的推广与普及,我们更专业!我们的学员已经广泛就职于BAT360等各大IT互联网公司。详情请参考我们的 业界反馈 《周哥教IT.C语言深学活用》视频

我们的微信公众号,敬请关注