23.1 — 对象关系
生活中充满了各种重复的模式、关系以及对象之间的层级结构。通过探索和理解这些,我们可以深入了解现实生活中对象的行为,从而增强我们对这些对象的理解。例如,假设有一天你走在街上,看到一个亮黄色的物体附着在……
生活中充满了各种重复的模式、关系以及对象之间的层级结构。通过探索和理解这些,我们可以深入了解现实生活中对象的行为,从而增强我们对这些对象的理解。例如,假设有一天你走在街上,看到一个亮黄色的物体附着在……
在本章中,我们探讨了与运算符重载、重载类型转换以及复制构造函数相关的各种主题。总结:运算符重载是函数重载的一种变体,它允许您为您的类重载运算符。当运算符被重载时,运算符的意图应该是……
复制赋值运算符 (operator=) 用于将值从一个对象复制到另一个已存在的对象。相关内容:从 C++11 开始,C++ 也支持“移动赋值”。我们在课程中讨论移动赋值。复制赋值与复制构造函数:复制构造函数和复制赋值的目的……
在课程中,我们介绍了类型转换和隐式类型转换的概念,即如果存在这样的转换,编译器会在需要时隐式地将一种类型的值转换为另一种类型的值。这使得我们可以做这样的事情:#include <iostream> void printDouble(double …
早在课程中,我们讨论了基础类型对象的 6 种基本初始化类型:int a; // 无初始化器(默认初始化)int b = 5; // 等号后的初始化器(复制初始化)int c( 6 ); // 括号中的初始化器(直接初始化)// 列表初始化方法 (C++11) …
在上一课中,我们重载了 operator+ 作为友元函数:#include <iostream> class Cents { private: int m_cents{}; public: Cents(int cents) : m_cents{ cents } {} // 使用友元函数添加 Cents + Cents friend Cents operator+(const Cents& c1, const Cents& c2); int getCents() const { return m_cents; …
大多数具有某种用户界面的程序都需要处理用户输入。在您一直编写的程序中,您使用 std::cin 来要求用户输入文本。由于文本输入非常自由(用户可以输入任何内容),因此很容易……
作用域、持续时间和链接的概念造成了许多困惑,因此我们将额外用一课来总结所有内容。其中有些内容我们尚未涉及,它们在此处只是为了完整性/供以后参考。标识符的作用域决定了标识符可以在何处访问……
在课程中,我们提到变量或函数标识符只能有一个定义(单一定义规则)。因此,一个多次定义变量标识符的程序将导致编译错误:int main() { int x; // 这是变量 x 的定义 int …
在本章中,我们探讨了 C++ 的核心——类!这是本教程系列中最重要的一章,因为它为接下来的大部分内容奠定了基础。章节回顾:,重点是创建“过程”(在 C++ 中称为函数)来……