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 笔记的更多相关文章

  1. C++ 11 笔记 (三) : auto

    我真的不是标题党... 虽然大一上学期学C语言基础时就学了auto关键字了,而且还是跟static和register两个关键字打包学的,但是.. 猜的没错,C++11这货又给auto加新功能了,在 C ...

  2. C++11笔记

    __func__宏 __func__返回当前的函数名,也可以返回class和struct名. /*返回函数名hello*/ const char* hello() { return __func__; ...

  3. C++ 11 笔记 (六) : 随机数

    以前生成一个随机数都是这样: srand(time(NULL)); rand(); 在C++11中,标准库中增加了随机数引擎 std::default_random_engine 这个好东西,然后我们 ...

  4. C++ 11 笔记 (五) : std::thread

    这真是一个巨大的话题.我猜记录完善绝B需要一本书的容量. 所以..我只是略有了解,等以后用的深入了再慢慢补充吧. C++写多线程真是一个痛苦的事情,当初用过C语言的CreateThread,见过boo ...

  5. C++ 11 笔记 (二) : for循环

    首先肯定的是,我不是标题党.. C++11的for循环确实有跟C++98不一样的地方,还是先上代码: , , , , }; for (int x : test_arr) { std::cout < ...

  6. C++ 11 笔记 (一) : lambda

    时至今日都是我咎由自取,错就是错,与任何人无关.掉进C++98的各种坑里无法自拔的抖M感,让我选择了华丽丽的无视C++11,导致今日面对开源的代码到各种看不懂的地步,一入C++深似海,我今天愿意承担一 ...

  7. C++11笔记<一>

    目录: 1.std::share_ptr智能指针: 2.std::tr1::function模板类: 3.stringstream: 4.set/vector/map: 5.static_cast&l ...

  8. 斯坦福iOS7公开课11笔记及演示Demo&访问HTTPS链接下载数据

    这一节主要介绍UITableView以及iPad,Demo为从Flicker下载图片并显示,但是实际过程中发现需要FQ并使用HTTPS连接,所以这次用了两个Demo,一个是课程中的Demo,另一个是简 ...

  9. C++ 11 笔记 (四) : std::bind

    std::bind 接受一个可调用的对象,一般就是函数呗.. 还是先上代码: void func(int x, int y, int z) { std::cout << "hel ...

随机推荐

  1. mysql中distinct的用法

    本事例实验用表task,结构如下 MySQL> desc task; +-------------+------------+------+-----+-------------------+- ...

  2. laravel数据库迁移(三)

    laravel号称世界上最好的框架,数据库迁移算上一个,在这里先简单入个门: laravel很强大,它把表中的操作写成了migrations迁移文件,然后可以直接通过迁移文件来操作表.所以 , 数据迁 ...

  3. ES6学习笔记一

    块级作用域:在ES5中只有全局作用域与函数作用域,ES6中新增的块级作用域避免变量的覆盖与泄露.考虑到代码运行环境,在块级作用域中应避免声明函数,最好用函数表达式的方式声明. let与const:le ...

  4. 求两圆相交部分面积(C++)

    已知两圆圆心坐标和半径,求相交部分面积: #include <iostream> using namespace std; #include<cmath> #include&l ...

  5. 项目vue2.0仿外卖APP(六)

    goods 商品列表页开发 布局编写 除了商品之外还有购物车,还有个详情页,挺复杂的. 两栏布局:左侧固定宽度,右侧自适应,还是用flex. 因为内容可能会超过手机高度,超过就隐藏.左右两侧的内容是可 ...

  6. kernel 4.4.12 EETI eGTouch 电容屏驱动移植

    kernel 4.4.12 EETI eGTouch 电容屏驱动移植: 在make menuconfig 里面添加如下选项: 添加通过事件上报接口节点: Device Drivers ---> ...

  7. Session、Cookie--2017年1月3日

    Session Session 对象用于存储用户的信息.存储于 session 对象中的变量持有单一用户的信息,并且对于一个应用程序中的所有页面都是可用的.    Session 对象 当您操作某个应 ...

  8. android 移动网络实时抓包

    2G.3G环境,那就必须root进去tcpdump 方式抓. 准备: 一.root CF-auto-root: http://autoroot.chainfire.eu/ 需要清理全部数据,注意备份 ...

  9. Selenium Xpath Tutorials - Identifying xpath for element with examples to use in selenium

    Xpath in selenium is close to must required. XPath is element locator and you need to provide xpath ...

  10. Python3.5在Windows 7下连接ORACLE数据库

    1.首先需要安装好oracle数据库,本机适用plsql连接数据库正常,记录下数据库名称 2.安装cx_oracle模块 pip install cx_Oracle 3.python中引入模块 imp ...