
C++
Polizi
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++17(4) : 聚合初始化
一、C++17中聚合的定义 1、任意数组都被称为聚合。 2、具有以下特点的类、结构体或者是共用体: -没有用户声明的构造函数或者被explict修饰的构造函数。 -没有using Base::Base()这种的构造函数。 struct Data{ }; struct D: public Data{ using Data:...原创 2019-05-19 16:30:35 · 2502 阅读 · 0 评论 -
C++17(1) : 结构化绑定(Structured Bindings)
1、结构化绑定 结构化绑定允许通过对象、结构体的成员来初始化多个变量,例如 struct Mystruct{ int i = 0; std::string s = "hello"; } Mystruct ms; auto [u, v] = ms; 2、用处 a、通常用处 结构化绑定通常应用与接收返回结构体、类对象、数组等包含多个元素的函数返回值。例...原创 2019-05-16 14:27:41 · 1535 阅读 · 0 评论 -
C++17(2) : if 与 switch 在语句中的初始化
1、if 初始化 //初始化作用域开始 if(int i = 10; true){ std::cout << "true " << i << std::endl; } else{ std::cout << "false " << i << std::endl; } //初始化作用域结束 2、swi...原创 2019-05-16 17:35:09 · 547 阅读 · 0 评论 -
C++17(3) : inline 变量
一、inline 回顾过去 inline 只能用于函数名字之前, 用来建议编译器将被修饰的函数在使用处展开,来解决参数入栈出栈的开销。 它提供了两个保证: 1、在所有的用到被inline 修饰的函数的源文件中,其函数的定义都是相同的。 2、被inline修饰的函数必须在每一个源文件中都有一个定义。(不论展开不展开)。 二、C++17 ...原创 2019-05-17 21:12:15 · 3991 阅读 · 1 评论 -
C++17(5) : 临时对象传递时不进行拷贝
一、临时对象 临时对象指的是没有名字的对象。 对于这样的对象不论是传递参数,还是已返回值返回时,都不会调用拷贝构造。下面这段代码在C++17是可以正常编过的。 class A{ public: A(const A&) = delete; }; void test(A a){ } A test2(){ return A{}; } test(A{}...原创 2019-05-29 10:41:33 · 516 阅读 · 0 评论 -
C++17(6) : lambda扩展
一、constexpr Lambda 自从C++17开始,如果lambda表达式符合要求的话,该表达式会隐式转换为constexpr表达式。(表达式内没有静态变量,没有虚函数,没有 try/catch语句, 没有new/delete关键字)。如下: auto squared = [](auto val) { return val*val; };//隐式转换为constexpr...原创 2019-05-29 14:43:36 · 768 阅读 · 0 评论