F.X — F 章总结与测验
constexpr 函数是一种允许在常量表达式中调用的函数。要将函数设为 constexpr 函数,我们只需在返回类型前使用 constexpr 关键字。constexpr 函数仅在使用特定上下文时才保证在编译时进行评估……
constexpr 函数是一种允许在常量表达式中调用的函数。要将函数设为 constexpr 函数,我们只需在返回类型前使用 constexpr 关键字。constexpr 函数仅在使用特定上下文时才保证在编译时进行评估……
Constexpr/consteval 函数可以使用非 const 局部变量 在 constexpr 或 consteval 函数中,我们可以使用非 constexpr 的局部变量,并且这些变量的值可以更改。举一个简单的例子: #include <iostream> consteval int doSomething(int x, int y) // 函数是 consteval { x = …
强制 constexpr 函数在编译时求值 无法告诉编译器 constexpr 函数应该在可能的情况下(例如,当 constexpr 函数的返回值用于非常量表达式时)优先在编译时求值。但是,我们可以……
非常量表达式中的 constexpr 函数调用 您可能会期望 constexpr 函数在可能的情况下在编译时求值,但不幸的是情况并非如此。在课程中,我们注意到在不需要常量表达式的上下文中,编译器可以选择是否求值……
优化简介 在编程中,优化是修改软件以使其更高效地工作(例如运行更快或使用更少资源)的过程。优化可以对应用程序的整体性能水平产生巨大影响。某些类型的优化通常是手动完成的。一个……
考虑以下不能正常工作的程序: main.cpp: #include <iostream> template <typename T> T addOne(T x); // 函数模板前向声明 int main() { std::cout << addOne(1) << ‘\n’; std::cout << addOne(2.3) << ‘\n’; return 0; } add.cpp: template <typename T> T addOne(T x) // 函数模板定义 { …
在课程中,我们介绍了 constexpr 函数,这些函数可以在编译时或运行时求值。例如: #include <iostream> constexpr int greater(int x, int y) { return (x > y ? x : y); } int main() { std::cout << greater(5, 6) << ‘\n’; // greater(5, …
以下程序旨在打印您的编译器当前使用的语言标准名称。您可以复制/粘贴、编译并运行此程序,以验证您的编译器正在使用您期望的语言标准。 PrintStandard.cpp: // 此程序打印您的编译器正在使用的 C++ 语言标准是……
在上一课中 (),我们展示了这个示例,其中我们使用了一个函数将枚举转换为等效的字符串: #include <iostream> #include <string_view> enum Color { black, red, blue, }; constexpr std::string_view getColorName(Color color) { switch (color) { case black: return “black”; case red: return “red”; case …
在上一课中 (),我们展示了一个类似的示例: #include <iostream> enum Color { black, // 0 red, // 1 blue, // 2 }; int main() { Color shirt{ blue }; std::cout << “您的衬衫是 ” << shirt << ‘\n’; return 0; } 这会打印:您的衬衫……