码迷,mamicode.com
首页 > 编程语言 > 详细

c++11 delete禁用函数

时间:2017-08-24 23:52:00      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:调用   添加   完全   拷贝   关键字   编译   std   ret   tor   

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 函数后面,就把这个函数完全消失掉了。继承也木有用了。

 

c++11 delete禁用函数

标签:调用   添加   完全   拷贝   关键字   编译   std   ret   tor   

原文地址:http://www.cnblogs.com/chenhuan001/p/7425652.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!