c++11添加了delete关键字。
不想用那个函数,在那个函数后面加 = delete就可以了;
比如:
在函数重载中,可用 delete 来滤掉一些函数的形参类型,如下:bool IsLucky(int number); // original functionbool IsLucky(char) = delete; // reject charsbool IsLucky(bool) = delete; // reject boolsbool IsLucky(double) = delete; // reject doubles and floats
上述功能看似没啥作用,都delete为啥还要写。
但是,因为c++对每个类都会默认生出6个函数。有时间后我们不想我们的类被拷贝或赋值。我们可以把拷贝构造函数,重载赋值函数定义为私有。
但是定义成私有,类内部还是可以拷贝,赋值。 我想要无论如何都不能调用拷贝、赋值怎么办。
当然是用delete一下啦。
以下是测试代码:
#includeusing 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 函数后面,就把这个函数完全消失掉了。继承也木有用了。