最近在看Effective C++,那么问题来了
王大贵 2014-11-10 01:20:07 Effective C++ 条款6:
不想使用编译器提供的默认函数,就该明确拒绝
书上举例,一个class Home{..};如果希望他不具备复制的功能,应该声明一个显示的复制函数,然后这个复制函数位于private,然后不去定义这个复制函数。这样就可以防止对象的复制
~~~啊~~~
在看这本书以前,我遇到过类似的问题,一个类class Video{...};这是一个模拟唱片的类
这个类要求不能被复制,也不能用=号,(唱片为只读)然后我当时采用的办法是定义一个=重载,然后什么都不做
public:
firend void operator=(const Video&) //声明,在共有部分
void Video::operator=(const Video&) //定义,这个函数什么都没做
{
std::cout<<"唱片为只读模式,无法复制内容\n"
}
我的想法是:当用户执行了一个误操作(复制),程序给出提示并阻止他,而不是让程序出错
当时我使用这个类的时候没遇到什么问题,然后今天看了Effective C++提供的方法,我想问下,我的这种处理是否存在潜在的风险