C++11新特性
文章平均质量分 93
ACE叫牌
KEEPING CODING
展开
-
C++11的lambda表达式
Lambda表达式是一种匿名函数,允许我们在不声明方法的情况下,直接定义函数。它是函数式编程的一种重要特性,常用于简化代码、优化程序结构和增强代码可读性。在lambda函数的定义中,和都是可选的部分,而和都可能为空。那么在极端情况下,C++11中最为简略的lambda函数只需要声明为[]{};就可以了。不过理所应当地,该lambda函数不能做任何事情。原创 2023-12-27 18:47:31 · 1579 阅读 · 1 评论 -
C++的移动语义和完美转发
std::move()内部是用static_cast做类型转换,只不过它是使用模板实现的函数,因此会根据传参类型自动推导返回值类型,省去了指定类型的代码。原创 2023-12-13 02:03:09 · 1187 阅读 · 2 评论 -
C++的左值、右值、左值引用和右值引用
因为非常量左值无法引用MakeMyClass()返回的右值,所以常量左值引用右值是一条非常棒的特性,但是也有弊端。在上面的代码中,x++是一个右值,++x是一个左值。因为对于后置++,编译器会生成一份x的临时复制,然后才对x自增,返回临时复制的内容,所以后置++是右值。左值引用的出现使C++编程脱离了使用指针的危险,当我们需要将一个对象作为函数的参数时,会使用左值引用,这种方式会免去创建临时对象的操作。对于get_val函数,x作为全局变量是一个左值,但在返回x值时编译器会产生一份x的临时复制,还是右值。原创 2023-12-12 22:57:33 · 925 阅读 · 0 评论