7.14 — 匿名命名空间和内联命名空间
C++ 支持两种值得了解的命名空间变体。我们不会在此基础上进行构建,所以目前可以将本课程视为可选。未命名(匿名)命名空间 (也称为 )是一个没有名称的命名空间,如下所示: #include <iostream> namespace // 未命名命名空间 …
C++ 支持两种值得了解的命名空间变体。我们不会在此基础上进行构建,所以目前可以将本课程视为可选。未命名(匿名)命名空间 (也称为 )是一个没有名称的命名空间,如下所示: #include <iostream> namespace // 未命名命名空间 …
每个块都定义了自己的作用域区域。那么,当我们在嵌套块中有一个变量,其名称与外部块中的变量相同会发生什么?当这种情况发生时,嵌套变量会在它们都在作用域中的区域“隐藏”外部变量。这 …
在某些应用程序中,某些符号常量可能需要在整个代码中使用(不仅仅在一个位置)。这些可能包括不变的物理或数学常数(例如 pi 或阿伏伽德罗常数),或特定于应用程序的“调整”值(例如摩擦或重力系数)。与其在每个 …
在第 课中,我们说过:“标识符的链接决定了该名称的其他声明是否引用同一个对象”,并且我们讨论了局部变量没有链接。全局变量和函数标识符可以具有内部链接或外部链接。我们将介绍内部链接的情况 …
在上一课中(),我们介绍了以下示例: #include <algorithm> #include <array> #include <iostream> #include <string_view> int main() { std::array<std::string_view, 4> arr{ “apple”, “banana”, “walnut”, “lemon” }; auto found{ std::find_if(arr.begin(), arr.end(), [](std::string_view str) { return str.find(“nut”) != std::string_view::npos; }) }; if (found == arr.end()) { std::cout << “No nuts\n”; …
考虑我们在第 课中介绍的这段代码: #include <algorithm> #include <array> #include <iostream> #include <string_view> // 如果元素匹配,我们的函数将返回 true bool containsNut(std::string_view str) { // std::string_view::find 如果找不到子字符串,则返回 std::string_view::npos。否则返回找到的索引 …
新程序员通常会花费大量时间编写自定义循环来执行相对简单的任务,例如对数组进行排序、计数或搜索。这些循环可能会出现问题,无论是出错的难易程度,还是整体可维护性方面,因为循环可能 …
遍历数组(或其他结构)中的数据在编程中是相当常见的事情。到目前为止,我们已经介绍了许多不同的方法:使用循环和索引(for 循环和 while 循环)、使用指针和指针算术,以及基于范围的 for 循环: #include <array> #include …
随着 C++ 的许多不同版本(C++98、C++03、C++11、C++14、C++17、C++20、C++23 等)的出现,您的编译器如何知道使用哪个版本?通常,编译器会选择一个标准作为默认。通常默认的不是最新的语言标准——许多默认是 C++14,它 …