C++11 delete和default】的更多相关文章

Defaulted 函数 C++ 的类有四个特殊成员函数,它们分别是:默认构造函数.析构函数.拷贝构造函数以及拷贝赋值运算符.这些类的特殊成员函数负责创建.初始化.销毁,或者拷贝类的对象. 如果程序员没有显式地为一个类定义某个特殊成员函数,而又需要用到该特殊成员函数时,则编译器会隐式的为这个类生成一个默认的特殊成员函数.但是,如果程序员为类显式的自定义了非默认构造函数,编译器将不再会为它隐式的生成默认构造函数,手动编写的特殊成员函数的代码执行效率比编译器自动生成的特殊成员函数低. 先看一个示例程…
 1.拷贝构造 //拷贝构造的规则,有两种方式实现初始化. //1.一个是通过在后面:a(x),b(y)的方式实现初始化. //2.另外一种初始化的方式是直接在构造方法里面实现初始化. 案比例如以下: #include<iostream> //假设声明已经定义.边不会生成 class classA { private: int a; int b; public: //拷贝构造的规则,有两种方式实现初始化 //1.一个是通过在后面:a(x),b(y)的方式实现初始化 //2.另外一种初始化的…
1  特殊成员函数 设计一个类,没有成员函数 (member function),只有数据成员 (member data) class DataOnly { private: std::string strName; // member data int iData; }; C++98 编译器会隐式的产生四个函数:缺省构造函数,析构函数,拷贝构造函数 和 拷贝赋值算子,它们被称为特殊成员函数 (special member function). 在 C++11 中,被称为 “特殊成员函数” 的还…
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) = de…
1.为什么要阻止类对象的拷贝? 1)有些类,不需要拷贝和赋值运算符,如:IO类,以避免多个拷贝对象写入或读取相同的IO缓冲 2.如何阻止? 1)不定义拷贝构造函数和拷贝赋值运算符时,好心的编译器也会及时地学习雷锋好榜样帮你合成定义,即传说中的合成拷贝构造.合成拷贝赋值,所以这样阻止不了 2)c++11允许使用“=delete”将拷贝构造函数和拷贝赋值运算符定义为删除的函数,在函数参数列表后加上“=delete”即表明这个函数是删除的函数 3)删除的函数是一种这样的函数:我们虽然声明了它,但是不能…
从C++出来到现在已经13年了. Bjarne Stroustrup(C++的创造者)最近评价C++:”感觉像个新的语言“. 事实上,C++11核心已经发生了很重大的变化: . 支持Lambda表达式( lambda expressions) . 对象自动类型推导(automatic type deduction of objects) . 统一初始化语法(uniform initialization syntax) . 代理构造(delegating constructors) . delet…
感慨时间过的好快,C++ 11出来都5年了,现在才开始学习,但为时也不晚: 主要是网上及身边的朋友大肆宣扬C++ 11的某些优化,弄得别人心里痒痒的,所以就花了3天学习了点基本知识,相对于整个C++ 11的新增来说就是九牛一毛: 先上一张C++ 11的图: 1.推导关键词 auto & decltype; 详解:http://www.cnblogs.com/viscount/p/5842872.html 2.Lambda的使用: 详解:http://www.cnblogs.com/viscoun…
1.default 构造方法意味着,没有外来信息的情况下,进行初始化,构造出一个对象.对于有些对象是很合理的,比如数值之类的对象,可以初始化为0:对于指针之类的对象,初始化为null:对于集合如vector,list,可以初始化为一个空容器. 2.对于有些对象,必须要有外来信息,才能构造出一个有意义的对象.比如Person,要有name才能构造出一个有意义的Person对象. 3.因此,对于没有外来信息,也能合理构造出一个对象的类,必须提供default 构造方法.对于没有外来信息,不能构造出一…
本文转载自:http://woboq.com/blog/cpp11-in-qt5.html   C++11 in Qt5 Posted by Olivier Goffart on 11 June 2012 C++11 is the name of the current version of the C++ standard, which brings many new features to the language. Qt 4.8 was the first version of Qt th…
C++11 中值得关注的几大变化(详解) 原文出处:[陈皓 coolshell] 源文章来自前C++标准委员会的 Danny Kalev 的 The Biggest Changes in C++11 (and Why You Should Care),赖勇浩做了一个中文翻译在这里.所以,我就不翻译了,我在这里仅对文中提到的这些变化"追问为什么要引入这些变化"的一个探讨,只有知道为了什么,用在什么地方,我们才能真正学到这个知识.而以此你可以更深入地了解这些变化.所以,本文不是翻译.因为写…