7.2 — 用户自定义命名空间和作用域解析运算符

在那一课中,我们介绍了命名冲突和命名空间的概念。提醒一下,当两个相同的标识符被引入到同一个作用域中,并且编译器无法区分使用哪一个时,就会发生命名冲突。当这种情况发生时,编译器或链接器会产生一个错误,因为它们……

20.3 — 递归

C++ 中的递归函数是调用自身的函数。下面是一个写得不好的递归函数的示例: #include <iostream> void countDown(int count) { std::cout << “push ” << count << ‘\n’; countDown(count-1); // countDown() 递归调用自身 } int main() { countDown(5); return 0; } 当 countDown(5) ……

20.2 — 栈与堆

程序使用的内存通常分为几个不同的区域,称为段: 代码段(也称为文本段),编译后的程序驻留在内存中。代码段通常是只读的。 bss 段(也称为未初始化数据段),其中零初始化的全局和……

20.1 — 函数指针

在上一课中,您了解到指针是保存另一个变量地址的变量。函数指针类似,不同之处在于它们不是指向变量,而是指向函数!考虑以下函数: int foo() { return 5; } 标识符 foo() 是函数的名称。但是……

11.5 — 默认参数

是为函数参数提供的默认值。例如: void print(int x, int y=10) // 10 是默认参数 { std::cout << “x: ” << x << ‘\n’; std::cout << “y: ” << y << ‘\n’; } 调用函数时,调用者可以选择……

11.1 — 函数重载简介

考虑以下函数: int add(int x, int y) { return x + y; } 这个简单的函数将两个整数相加并返回一个整数结果。然而,如果我们还想要一个可以相加两个浮点数的函数怎么办?这个 add() 函数不适合,因为任何浮点数……

7.9 — 内联函数和变量

考虑这样一种情况,您需要编写一些代码来执行一些离散任务,例如从用户读取输入,或向文件输出内容,或计算特定值。在实现此代码时,您基本上有两个选择: 将代码作为现有函数的一部分编写……

12.10 — 按地址传递

在之前的课程中,我们介绍了两种不同的向函数传递参数的方式:按值传递 () 和按引用传递 ()。下面是一个示例程序,展示了 std::string 对象如何按值和按引用传递: #include <iostream> #include <string> void printByValue(std::string val) // 函数……

12.5 — 通过左值引用传递

在前面的课程中,我们介绍了左值引用 () 和对 const 的左值引用 ()。孤立地看,这些可能看起来不太有用——当您可以直接使用变量本身时,为什么要为变量创建别名呢?在本课中,我们将最终提供一些关于……