【C++11之使用或禁用对象的默认函数】
C++11 允许显式地表明采用或拒用编译器提供的内置函数。例如要求类型带有默认构造函数,可以用以下的语法:
另一方面,也可以禁止编译器自动产生某些函数。如下面的例子,类型不可复制:
= delete
的声明(同时也是定义)也能适用于非内置函数, 禁止成员函数以特定的形参调用:
若尝试以 double 的形参调用 f()
,将会引发编译期错误, 编译器不会自动将 double 形参转型为 int 再调用f()
。 若要彻底的禁止以非int的形参调用f()
,可以将= delete
与模板相结合: