您的位置:首页 > 编程语言 > C语言/C++

c++11 delete禁用函数

2017-08-24 22:49 232 查看
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 函数后面,就把这个函数完全消失掉了。继承也木有用了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: