需要析构函数的类也需要拷贝和复制操作
需要拷贝操作的类也需要赋值操作
NoCopy(const Nocopy)=delete;//阻止拷贝
NoCopy &operator=(const NoCopy&)=delete;//阻止赋值
析构函数不能被删除
如果一个类有成员不能默认构造,拷贝,赋值或销毁。那么对应的成员函数将被定义为删除的
如果一个类中有引用成员
赋值操作考虑自赋值运算,并且要将左值原有的资源进行相应的释放(析构),对新资源进行新的构造。
void swap(Myclass val)
{
using std::swap;
swap(val0,val1);
}
operator =(Myclass val)
{
swap(*this,val);
return *this;
}
当我们定义const成员函数时,唯一的差别就是重载版本有没有const限定。而对于引用限定函数而言。如果我们定义两个及以上的具有相同名字和形参的成员函数,那么就必须对所有函数加上引用限定符,或者所有都不加
foo sorted()&&;
foo sorted()const;
//worng
foo sorted();
foo sorted() const;
..right;