模板参数,模板实例化,类型别名,显式实参,类型转换,右值引用与move,forward语义,可变参数模板,特化偏特化 ...
分类:
编程语言 时间:
2018-12-28 00:47:51
阅读次数:
203
一、算数运算符 1、算数运算符的运算对象和求值结果都是右值。 2、对大多数运算符来说,布尔类型的运算对象将被提升为int类型。 3、c++11新标准规定商一律向0取整(即直接切除小数部分)。 4、根据取余运算的定义,如果m和n是整数且n非0,则表达式(m/n)*n+m%n的求值结果与m相等。隐含的意 ...
分类:
其他好文 时间:
2018-12-18 00:05:22
阅读次数:
234
左值和右值 在C和C++11以前,认为能放在赋值语句左边的就是左值,而不能放在赋值语句左边的就是右值, 但是在C++11中有一些特殊情况,所以,在C++11中认为,左值使用的是变量本身,即它在内存中的位置,而右值使用的是变量存放的值 例如 a = b + c; 这个语句表示的是将b中的值和c中的值相 ...
分类:
其他好文 时间:
2018-12-15 23:54:01
阅读次数:
168
一、左值右值 当一个对象被用作右值的时候,用的是对象的值(内容);当对象被用作左值的时候,用的是对象的身份(在内存中的位置)。 一个重要的原则(有一种例外情况,待写。。。)在需要右值的地方可以用左值来代替,但是不能把右值当初左值使用。当一个左值被当成右值使用时,实际使用的是它的内容。 要用到左值的几 ...
分类:
其他好文 时间:
2018-12-07 01:29:19
阅读次数:
222
拷贝控制 右值与const引用 背景:当一个函数的返回值是自定义类型时,调用侧用什么类型接收?? 1,如果自定义类型的拷贝构造函数的参数用const修饰了:可以用下面的方式接收。 2,如果自定义类型的拷贝构造函数的参数没有用const修饰了:必须用下面的方式接收 编译错误: 解释: 第一种条件下,用 ...
分类:
编程语言 时间:
2018-12-04 00:07:02
阅读次数:
217
左值右值 名词 左值:lvalue,left value 右值:rvalue,right value C语言 这两个名词是从C语言继承过来的,C语言中为了帮助记忆:左值可以出现在赋值语句的左侧,右值则不能。 C++ 在C++语言中,二者的区别就没那么简单了。C++的表达式要不然就是左值,要不然就是右 ...
分类:
编程语言 时间:
2018-11-29 11:07:36
阅读次数:
145
41:针对可复制的形参,在移动成本低且一定会被赋值的前提下,考虑将其按值传递 上面的addName函数,针对左值实施复制,右值实施移动。但是它实际上是在两个函数中做同一件事情,是冗余代码。可以考虑使用万能引用的函数模板: 虽然这消除了冗余代码,但是万能引用会导致其他方面的复杂性,作为模板,addNa ...
分类:
编程语言 时间:
2018-11-25 22:22:46
阅读次数:
213
多线程 等待一次性事件 std::promise用法 背景:不是很明白,不知道为了解决什么业务场景,感觉std::async可以优雅的搞定一切的一次等待性事件,为什么还有个std::promise。 用法:和std::async一样,也能够返回std::future,通过调用get_future方法 ...
分类:
编程语言 时间:
2018-11-25 20:39:52
阅读次数:
212
题目链接 http://hdu.hustoj.com/showproblem.php?pid=3308 问题描述 给出n个整数,有两种操作 1)U A B:用B取代第A个数(下标从0开始) 2)Q A B:输出在[A,B]中最长连续递增子序列的长度分析 给出一个序列,两种操作,分别是单点更新值和查询 ...
分类:
其他好文 时间:
2018-11-24 14:23:36
阅读次数:
199
1、什么是左值和右值? 左值就是出现在表达式左边的值(等号左边),可以被改变,他是存储数据值的那块内存的地址,也称为变量的地址; 右值是指存储在某内存地址中的数据,也称为变量的数据。 左值可以作为右值,但右值不可以是左值。 因此也只有左值才能被取地址。 2、举两个问题: int i = 0; (i+ ...
分类:
其他好文 时间:
2018-11-18 20:08:43
阅读次数:
151