在C++中,对于类我们如何防止被拷贝?
首先,我们知道,在C++类中,我们是如何实现对类实例化对象的拷贝。是通过该类中的拷贝构造函数和赋值运算符的重载来实现的,那么我们可以通过禁止在类外使用这两种方法来达到防止该类被拷贝的目的。
具体怎么做:
将拷贝构造函数和赋值运算符的重载,声明为private(私有,类外无权访问),可以不给出实现。
代码实现:
#include<iostream>
using namespace std;
class Date
{
public:
Date(int year = 0, int month = 0, int day = 0)
: _year ( year)
,_month(month)
,_day(day)
{
cout << "Date()" << endl;
}
private:
Date(const Date&) { };
Date& operator=(const Date &) { };
int _year;
int _month;
int _day;
};
int main()
{
Date d1;
Date d2(d1);//如果调用拷贝构造,会出现什么结果
Date d3 = d1;//如果调用赋值重载,会出现什么结果
return 0;
}
报错!编译无法通过