分类: C++ 教程
15.7 — 静态成员函数
在上一课中,你学习到静态成员变量是属于类而不是类对象的成员变量。如果静态成员变量是公共的,它可以使用类名和作用域解析运算符直接访问: #include <iostream> class …
15.6 — 静态成员变量
在这一课中,我们介绍了全局变量,在另一课中,我们介绍了静态局部变量。这两种类型的变量都具有静态持续时间,这意味着它们在程序启动时创建,在程序结束时销毁。这些变量甚至会保留它们的值…
14.4 — Const 类对象和 const 成员函数
在这一课中,你学习到可以通过 `const` 关键字将基本数据类型(int、double、char 等)的对象设置为常量。所有 const 变量都必须在创建时初始化。 `const int x; // 编译错误:未初始化` `const int y{}; // ok:值初始化` `const` …
15.2 — 类和头文件
我们目前编写的所有类都足够简单,我们可以直接在类定义中实现成员函数。例如,这是一个简单的 `Date` 类,所有成员函数都在 `Date` 类定义中定义: #include <iostream> …
14.12 — 委托构造函数
我们应该尽可能地减少冗余代码(遵循 DRY 原则 — Don’t Repeat Yourself,即“不要重复自己”)。考虑以下函数: `void A() { // 执行任务 A 的语句 }` `void B() { // 执行任务 A 的语句 // 执行任务 B 的语句 }` 这两个函数都有一个 …
15.1 — 隐藏的“this”指针和成员函数链式调用
新程序员经常会问关于类的问题之一是:“当成员函数被调用时,C++ 如何跟踪它是哪个对象调用的?” 首先,让我们定义一个简单的类来操作。这个类封装了一个整数值,并提供了一些访问函数…
14.9 — 构造函数简介
当一个类类型是聚合类型时,我们可以使用聚合初始化直接初始化该类类型: `struct Foo // Foo 是一个聚合类型` `{ int x {}; int y {}; };` `int main() { Foo foo { 6, 7 }; // 使用聚合初始化 return 0; }` 聚合…