阻止编译器默认生成拷贝构造函数和拷贝赋值函数
为了阻止编译器默认生成拷贝构造函数和拷贝赋值函数,我们需要手动去重写这两个函数,某些情况 下,为了避免调用拷贝构造函数和 拷贝赋值函数,我们需要将他们设置成private,防止被调用。 但是类的成员函数和friend函数还是可以调用private函数,如果这个private函数只申明不定义,则会产生一个连接错误; 针对上述两种情况,我们可以定一个base类, 在base类中将拷贝构造函数和拷贝赋值函数设置成private ,那么派生类中编译器将不会自动生成这两个函数,且由于base类中该函数是私有的,因此,派生类将阻止编译器执行相关的操作。 另一个例子,如果在base类中,我们把赋值构造函数定义为私有成员。派生类的赋值会怎么样呢? 这时,如果我们没有定义赋值构造函数,则C++会拒绝为其派生类生成一个拷贝赋值操作符这些赋值操作。 因为在赋值时,会让基类成员调用基类自己的赋值构造函数,但是这时是私有的,所以就会出问题。 [cpp] view plain copy "font-size:14px;" > class protected private const const class public 我们希望最后这两句话不能通过编译,那么怎样在C++中实现呢?一种想当然的做法,就是不去写拷贝构造函数和赋值运算符。但由上一个条款可以知道,这样做是行不通的,C+