C++11 笔记
5.重载运算符
本质上是一个函数。
函数名为operator(+-*/……)
如果一个运算符是成员函数,其左侧运算对象就绑定到隐式的this参数上。
a.拷贝赋值运算符
例如:
class Foo {
public:
Foo& operator=( const Foo& );
}
注意,赋值运算符通常返回一个指向其左侧运算对象的引用。(这样就可以在一个表达式中连续使用=)
若类内未定义,编译器会合成一个拷贝赋值运算符。
它会将右侧运算对象的每个非static成员赋予左侧运算对象的对应成员。
b.……运算符
4.初始化
int i = ;
int i = {};
int i{};
int i();
注意下面这种初始化写法是错误的。
int i = ();
默认初始化:
定义于任何函数体之外的内置类型变量会被初始化为0,函数体内不被初始化。
直接初始化
容器的emplace成员创建的元素都进行直接初始化
拷贝初始化
容器的insert或push成员创建元素进行拷贝初始化
3.关键字
explicit: 抑制构造函数定义的隐式转换。所以,explicit构造函数只能用于直接初始化。
explicit Sales_data(const std::string &s):bookNo(s) {} Sales_data item1(null_book); //可以进行直接初始化 Sales_data item2 = null_book; // 不能用于拷贝形式的初始化,因为不允许string 到 Sales_data的隐式的转换
对了,这个关键字只能在类内声明构造函数的时候使用。
2. 默认构造函数:参数列表位空的构造函数
拷贝构造函数:第一个参数是自身类类型的引用,且任何额外参数都有默认值的构造函数。
所以这个参数还必须是引用类型,因为若是非引用类型就需要对参数进行拷贝初始化,然后调用自身导致无限循环
移动构造函数:
1. 用auto作为函数的返回值?
不能直接使用auto的替换原来的返回类型。
但是可以在函数尾置返回类型中使用, 将auto放在函数名之前,与尾置返回类型配合指明函数的返回类型
auto fun() -> int{ return ;
}
C++11 笔记的更多相关文章
- C++ 11 笔记 (三) : auto
我真的不是标题党... 虽然大一上学期学C语言基础时就学了auto关键字了,而且还是跟static和register两个关键字打包学的,但是.. 猜的没错,C++11这货又给auto加新功能了,在 C ...
- C++11笔记
__func__宏 __func__返回当前的函数名,也可以返回class和struct名. /*返回函数名hello*/ const char* hello() { return __func__; ...
- C++ 11 笔记 (六) : 随机数
以前生成一个随机数都是这样: srand(time(NULL)); rand(); 在C++11中,标准库中增加了随机数引擎 std::default_random_engine 这个好东西,然后我们 ...
- C++ 11 笔记 (五) : std::thread
这真是一个巨大的话题.我猜记录完善绝B需要一本书的容量. 所以..我只是略有了解,等以后用的深入了再慢慢补充吧. C++写多线程真是一个痛苦的事情,当初用过C语言的CreateThread,见过boo ...
- C++ 11 笔记 (二) : for循环
首先肯定的是,我不是标题党.. C++11的for循环确实有跟C++98不一样的地方,还是先上代码: , , , , }; for (int x : test_arr) { std::cout < ...
- C++ 11 笔记 (一) : lambda
时至今日都是我咎由自取,错就是错,与任何人无关.掉进C++98的各种坑里无法自拔的抖M感,让我选择了华丽丽的无视C++11,导致今日面对开源的代码到各种看不懂的地步,一入C++深似海,我今天愿意承担一 ...
- C++11笔记<一>
目录: 1.std::share_ptr智能指针: 2.std::tr1::function模板类: 3.stringstream: 4.set/vector/map: 5.static_cast&l ...
- 斯坦福iOS7公开课11笔记及演示Demo&访问HTTPS链接下载数据
这一节主要介绍UITableView以及iPad,Demo为从Flicker下载图片并显示,但是实际过程中发现需要FQ并使用HTTPS连接,所以这次用了两个Demo,一个是课程中的Demo,另一个是简 ...
- C++ 11 笔记 (四) : std::bind
std::bind 接受一个可调用的对象,一般就是函数呗.. 还是先上代码: void func(int x, int y, int z) { std::cout << "hel ...
随机推荐
- 如何删除已安装的Windows服务
1) 开始-运行,输入regedit命令. (Windows键+R,输入regdeit) 2) 回车后会弹出一个窗口:注册编辑器.找到 HKEY_LOCAL_MACHINE\SYSTEM\Curre ...
- 浅谈C++之冒泡排序、希尔排序、快速排序、插入排序、堆排序、基数排序性能对比分析之后续补充说明(有图有真相)
如果你觉得我的有些话有点唐突,你不理解可以想看看前一篇<C++之冒泡排序.希尔排序.快速排序.插入排序.堆排序.基数排序性能对比分析>. 这几天闲着没事就写了一篇<C++之冒泡排序. ...
- Hibernate连接mysql数据库的配置
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hi ...
- 码云以及git使用
码云的使用方法以及git的连用 创建公钥的方法 打开码云,点击个人资料---->SSH公钥---->点击怎样生成公钥 SSH Keys ssh keys可以让你在你的电脑和Git@OSC知 ...
- json 使用 (下)
使用JSON JSON也就是JavaScript Object Notation,是一个描述数据的轻量级语法.JSON的优雅是因为它是JavaScript语言的一个子集.接下来你将看到它为什么如此重要 ...
- required - HTML5里的input标签的required属性提示文字修改
input 里面增加这样的语句: <input type="text" placeholder="您的姓名" required oninvalid=&qu ...
- memcache服务器端及PHP memcache扩展的安装(转载)
memcache服务器端的安装(windows版) 1.下载memcached软件 32位下载地址: memcached-win32-1.4.4-14.zip(直接下载) 下载页面: 64位下载 ...
- JS学习-创建对象
1.标准创建对象模式 var person = new Object(); person.name = "Nicholas"; person.age = 29; person.jo ...
- angular路由详解:
1.$routeProvider ngRoute模块中的服务 2.otherwise:设置用于路由改变时,与任何其他定义的路由无法匹配的时候执行的代码 3.when:为$route服务定义新的路由 例 ...
- Design Tiny URL
Part 1: 前言: 最近看了一些关于短址(short URL)方面的一些博客,有些博客说到一些好的东西,但是,也不是很全,所以,这篇博客算是对其它博客的一个总结吧. 介绍: 短址,顾名思义,就是把 ...