c++11添加了delete关键字。
不想用那个函数,在那个函数后面加 = delete就可以了;
比如:
在函数重载中,可用 delete 来滤掉一些函数的形参类型,如下: bool IsLucky(int number); // original function bool IsLucky(char) = delete; // reject chars bool IsLucky(bool) = delete; // reject bools bool IsLucky(double) = delete; // reject doubles and floats
上述功能看似没啥作用,都delete为啥还要写。
但是,因为c++对每个类都会默认生出6个函数。有时间后我们不想我们的类被拷贝或赋值。我们可以把拷贝构造函数,重载赋值函数定义为私有。
但是定义成私有,类内部还是可以拷贝,赋值。 我想要无论如何都不能调用拷贝、赋值怎么办。
当然是用delete一下啦。
以下是测试代码:
#include <iostream> using namespace std; class Test { public: Test() { } Test(const Test&) = delete; Test& operator = (const Test&) = delete; }; class Test1 : public Test{ }; int main() { Test test; //Test t2 = test;//编译错误 Test1 t1; //Test1 t2 = t1;//编译错误 return 0; }
上述代码可以看出,delete 函数后面,就把这个函数完全消失掉了。继承也木有用了。