在线咨询
有事点这里
有事点这里
看不懂这篇文章?联系我们
("麦洛克菲"长期致力于内核安全的推广与普及,我们更专业!)
求职QQ群:223902435。讨论各种求职笔试面试问题
作者:admin 时间:2015-10-31
标题:空类:缺省的构造函数,拷贝构造函数,赋值函数

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)