摘要: 在c++11里面,对于常数表达式有了更强的支持。一个是函数返回值可以是常数,另外一个是对于变量的常数表达式的支持更广。首先,函数返回值可以是常数。这个值你可以把它用在所有可以用常数的地方,例如一个数组的大小。下面是一个例子,来自wiki.constexpr int GetFive() {return 5;}int some_value[GetFive() + 5];也就是说,一个函数以constexpr来声明,那么编译器会知道这个函数返回的是常数,从而编译器会在编译期进行变量替换来求出这个常数。(这段来自wiki,本人做了整理)将函数声明为constexpr有非常严格的条件。首先,该函数的返回 阅读全文
posted @ 2012-05-01 21:57 掰棒子熊 阅读(465) 评论(0) 推荐(0) 编辑
摘要: 很久没写了……赶紧继续上这里说右值,有一种解释是说位于赋值运算符左边的是左值,右边的是右值。其实,从“右值引用”这里看的话,一种更准确的定义是,不能放在运算符左边的叫做右值,其他的叫做左值。好,说完右值,右值引用就好理解了,也就是对于右值的引用。那么,为什么之前没有右值引用呢?是因为右值主要都是一些临时变量,对它们的引用是没有意义的,因为理论上我们没有临时变量的任何知识,它是不可用的。而c++11引入右值引用,则主要是与move语义结合使用。那么,move语义是有什么用呢?这里的move可以按照文件操作中的"copy"和"move"两种操作中的后者来理解 阅读全文
posted @ 2012-05-01 21:01 掰棒子熊 阅读(592) 评论(0) 推荐(0) 编辑