C++11中的默认函数控制

C++11允许你有选择性地使用或不使用默认的函数实现。这是通过default和delete实现的,比如说你想使用默认的构造函数的实现,你可以如下做:


C++11中的默认函数控制_第1张图片

它代表你想使用C++默认的构造函数代码,与之相反,看下图:



它代表你不想使用该函数,即,你不能使用拷贝赋值操作符了。
须知default只能用于编译器能自动生成代码的函数,这些函数很有限就那几个。比如说,构造函数、COPY构造函数、COPY赋值操作符等。

Delete则可以用于任何成员函数,它的作用是禁用某个函数,而不是删除某个函数。


C++11中的默认函数控制_第2张图片

如图所示,如果没有redo(int)的话,你向redo输入一个int实参,该实参会被自动转换成double从而调用redo(double)。但是当你使用delete禁用redo(int)时,你再重复同一操作,会出现错误,无可用函数。这是因为编译器知道能用的只有redo(int),但是它被禁用了,而压根不会去考虑redo(double)。这就防止了隐式类型转换。

你可能感兴趣的:(C++11中的默认函数控制)