随笔分类 -  c++新特性

摘要:在C++11中,constexpr 函数有着严格的限制:函数体通常只能包含一条return语句(有时可以使用一些简单的表达式,但不能有循环、局部变量等)。 1 // error: body of 'constexpr' function 'constexpr int func(int)' not a 阅读全文
posted @ 2026-04-13 16:56 西兰花战士 阅读(24) 评论(0) 推荐(0)
摘要:变量模板 变量模板(Variable Templates)是C++14引入的一个新特性,它允许我们定义模板化的变量。我们可以创建一个变量,其类型或值依赖于模板参数。 基本语法 变量模板的声明和定义类似于函数模板。基本语法如下: 1 // 变量模板 2 template<typename T> 3 c 阅读全文
posted @ 2026-04-13 16:47 西兰花战士 阅读(17) 评论(0) 推荐(0)
摘要:C++14 引入了泛型 Lambda(Generic Lambdas),允许在 Lambda 表达式中使用自动类型推导,使得 Lambda 表达式可以接受任意类型的参数。这是通过使用 auto 关键字作为参数类型来实现的。 在 C++11 中,Lambda 表达式的参数类型必须明确指定。而 C++1 阅读全文
posted @ 2026-04-13 16:24 西兰花战士 阅读(18) 评论(0) 推荐(0)
摘要:为什么需要初始化捕获? 在C++11中,Lambda表达式的捕获列表有一定的局限性: 只能捕获当前作用域内存在的变量(通过值 [=] 或引用 [&])。 只能直接捕获变量名,无法在捕获时执行表达式(比如移动操作、调用函数初始化等)。 这导致了一些问题,例如: 无法移动捕获(Move Capture) 阅读全文
posted @ 2026-04-13 16:12 西兰花战士 阅读(26) 评论(0) 推荐(0)
摘要:引言 委派构造函数是C++11中新增的特性,目的是为了减少书写构造函数的时间。委托构造函数可以使用当前类的其他构造函数来帮助当前构造函数初始化。换而言之,就是可以将当前构造函数的部分(或者全部)职责交给本类的另一个构造函数。 先看一个不使用委托构造函数的例子: 1 class A 2 { 3 pub 阅读全文
posted @ 2023-11-20 17:40 西兰花战士 阅读(69) 评论(0) 推荐(0)
摘要:引言 在继承体系中,假设派生类想要使用基类的构造函数,须要在构造函数中显式声明。但此时会伴随一个问题,假若基类拥有众多不同版本的构造函数。则在派生类中需要编写非常多相应的"透传"构造函数。例如: 1 struct A 2 { 3 A(int i) {} 4 A(double d, int i) {} 阅读全文
posted @ 2023-11-10 13:56 西兰花战士 阅读(58) 评论(0) 推荐(0)