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. CSS属性小结之--半透明处理

    项目中经常有遇到需求半透明的情况,如图片.文字.容器.背景等等,每次都要去翻以前的项目,不甚其烦.现在一次性做个小结,方便自己查阅,也同时分享给大家: 一. 元素容器透明 .div{ opacity: ...

  2. 使用node初始化项目

    初始化项目 在建项目的时候经常会建很多文件夹和文件,今天使用node初始化项目自动生成这些内容. 执行步骤 执行命令 node init 初始化项目生成package.json 设置配置文件 var ...

  3. 学习 opencv---(8)非线性滤波:中值滤波,双边滤波

    正如我们上一篇文章中讲到的,线性滤波可以实现很多种不同的图像变换.然而非线性滤波,如中值滤波器和双边滤波器,有时可以达到更好的实现效果. 邻域算子的其他一些例子还有对 二值图像进行操作的形态学算子,用 ...

  4. Windows下C编程获取软件安装列表信息

    代码如下: #include <windows.h> #include <stdio.h> #include <iostream> #include <vec ...

  5. string类型转换int类型

    C++转换形式(C++11): int main(int argc, char* argv[]) { std::"; std::string str2 = "3.14159&quo ...

  6. 总结初用erlang 时的遇到一些问题

    算起来接触erlang 三个多月快四个月来,期间从零开始看书写erlang代码.修改RabbitMQ.业务开发.系统调优,总算是有点入门了. 最难受的是边学边修改RabbitMQ,开始真心的看不懂,不 ...

  7. 48. 二叉树两结点的最低共同父结点(3种变种情况)[Get lowest common ancestor of binary tree]

    [题目] 输入二叉树中的两个结点,输出这两个结点在数中最低的共同父结点. 二叉树的结点定义如下:  C++ Code  123456   struct BinaryTreeNode {     int ...

  8. ASP.NET SignalR入门

    前言 之前在培训ASP.NET WebAPI的时候有提过SignalR这个技术,但当时只是讲了是用来做什么的,并没有多说.因为自己也是画图找资料的时候见到的.后来当一直关注的前端大神贤心发布LayIM ...

  9. 关于.NET知识体系结构图总结

    转载:关于.NET知识体系结构图总结-零度http://www.xcode.me/book/net-framework-maps 最近对.NET框架方面的知识进行了概要的总结,整理了一些知识体系结构图 ...

  10. POJ 2352 Stars 线段树

    题目链接 题意:在一个二维平面上有n个星星,每个星星的等级为x,x为该星星左方和下方所包含的星星的数量(包含正左和正下的),输出每个等级各有多少星星,星星坐标按照y序递增给出,y值相同按照x递增给出. ...