C++中的空类,默认产生哪些类成员函数?

199 阅读1分钟

这个问题通常会作为笔试来靠你,如果你记忆好的话,我会建议你把答案背下来。会产生六个默认函数,依次为

缺省构造函数,拷贝构造函数,析构函数,赋值运算符,取址运算符,取址运算符 const

class Empty

{

public:

Empty(); // 缺省构造函数

Empty( const Empty& ); // 拷贝构造函数

~Empty(); // 析构函数

Empty& operator=( const Empty& ); // 赋值运算符

Empty* operator&(); // 取址运算符

const Empty* operator&() const; // 取址运算符 const

};

这其中构造函数和析构函数大家都知道。有疑问的就是拷贝构造函数,赋值运算符,以及两个取址运算符。

拷贝构造函数,有的人也称复制构造函数。它只有一个参数,参数类型是本类的引用。如果有问你,只要牢记复制,实现从源对象到目标对象逐个字节的复制。很多面试和笔试都会考这个。

赋值运算符,其实就是=等号。该运算符会把这个类的所有数据成员进行一次赋值操作。

取址运算符,这个好理解,就是取地址&

const取址运算符,就是const取地址操作符const &,两者就是返回对象的地址

 

       平时可能看一遍就能理解,但是真正在面试的时候脑子会短路,可能只会记得构造函数和析构函数,而其他四个就会忘记了。我建议你这么回忆,拷贝构造函数就是本类引用,取址运算符是取地址,赋值运算符是等号即可。