C++11-从Rvalue references(右值引用)到move的设计 (1)当copy的右手边来源端是右值,那么左值可以“偷”右手边resource而不需要执行allocation;(2)左值和右值的差别:1、左值是变量;2、不能放在左手边的就是右值;(3)string是一个指针,对于string的红色测试都通过编译了,表达式s1+s2,临时对象string()都通过了!!!(4)对于complex的测试也通过了测试!!!complex没有指针哦!
c++11新特性--variadic templates(详细) 可以应用这个技巧,改变参数个数逐一减少,实现递归1)template模板代表的有函数模板和成员模板;variadic是参数,参数数量和参数类型;(2)新的关键字就是…,template;注意…在三个不同位置;
C++11-decltype 相当于typeof,**可以获取表达式的类型;但是typeof并不是标准库的,所以C++11添加了新的关键字decltype;就像decltype(coll)::value_type elem;
type alias+noexcept+override+final (1)typedef void(func)(int,int)说明func是一个函数指针,与下面的using func=void()(int,int)等价,但是using更加的明显,凸显func是一个类型;(2)右侧也是等效,using value_type=T等价于typedef T value_type;
C++11 Alias Template(template typedef)化名,Alias,换一个名称 2)右侧改善,传过去的是一个对象object,修改为list(),建立一个临时对象;(1)传入的是一个容器的对象object,需要在函数中取出容器的元素类型,函数第一行首先取出容器中的iterator迭代器,然后使用迭代器萃取机提问valuetype从而获得容器内的元素类型;(1)左侧版本天方夜谈因为传入的参数是一个容器(类型),但接收的是一个容器对象object,函数体中对容器类型进行区分,不太对。(3)不能对化名,来进行特化和偏特化,还是需要。,化名只是一个名字,不代表本尊;......
C++11=default,=delete 1)=default,默认,当你自行定义了一个构造函数,那么编译器就不会再给一个defaultctor,如果强制加上=default,就可以重新使用defaultctor;(2)主要作用在构造函数,拷贝构造,搬移构造,=delete就是不要它,=deafult是要编译器默认那个;(3)在库中的=delete使用情况,如下图,主要用于构造函数,拷贝构造,拷贝赋值和析构函数;多了与搬运构造和赋值;&&与move有关;(4)=default在库中的应用,在move和copy上,下图是析构函数。...
C++11新特性-Variadic Templates 使用时一定要写处理最后情况的函数(1)constType&…args表明接收任意数量任意类型的参数;(2)可以帮助我们做递归操作每次取出一个参数;做一个递归结束无参数的函数,终止递归;(3)sizeof…(args)返回到底有多少个;(4)2和3可以并存吗,是可以的!...
怎么限制一个类的对象实例,只能在“堆“上分配,或者只能在“栈“上分配 在C++中,类的对象建立分为两种,一种是静态建立(栈),如Aa;另一种是动态建立(堆),如A*ptr=newA;这两种方式是有区别的。一个类对象,是由编译器为对象在中分配内存,是通过直接移动栈顶指针,挪出适当的空间,然后在这片内存空间上调用构造函数形成一个栈对象。使用这种方法,。动态建立类对象,是使用n(或malloc)将对象建立在堆空间中。这个过程分为两步,第一步是执行operatornew()函数,在堆空间中搜索合适的内存并进行分配;第二步是调用构造函数构造对象,初始化这片内存空间。...
静态成员函数和普通成员函数的区别 类能够调用静态成员函数,对象也能够调用静态成员函数,但是由于静态成员函数并没有包含this指针,所以即使是用对象去调用静态成员函数,也是无法访问对象的成员变量。普通成员函数在创建时,会隐式增加一个this指针,对象在调用普通成员函数时,对象会把当前地址传给this指针,这就是为什么能在当前对象调用对象的成员变量。对象创建时,并不包括成员函数,其中在内存模型中所存储的一般为虚函数表指针,虚继承表指针,以及对应的成员变量。会在代码区创建相应代码块,但是值得一提的是,一旦创建第一个实例化对象,之后再创建对象,..