有时候我们要求某些类不能被拷贝,我们可以通过实现,一个不可拷贝的父类,子类对象继承父类对象,来达到子类对象不可拷贝的目的。
实现一个不可拷贝对象就是把拷贝构造函数和赋值运算符声明为私有的,同时实现构造函数(必须有,由于提供了拷贝构造,编译器不在提供)和析构函数。因此我们把nocopyable实现如下:
#ifndef NOCOPYABLE_H
#define NOCOPYABLE_H
class nocopyable {
protected:
nocopyable(){};
~nocopyable(){};
private:
nocopyable(const nocopyable& that);
nocopyable& operator=(const nocopyable& that);
};
#endif //NOCOPYABLE_H
测试代码如下:
#include <iostream>
#include "nocopyable.h"
using namespace std;
//私有继承就可以
class nocopy : nocopyable {
};
int main() {
nocopy no1;
// nocopy no2 = no1;
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。