26.3 — 函数模板特化

当为给定类型实例化函数模板时,编译器会根据模板函数生成一个副本,并将模板类型参数替换为变量声明中使用的实际类型。这意味着特定函数对于每种实例化的类型都将具有相同的实现细节(只是 …)

25.10 — 动态类型转换

早在本课,我们就探讨了类型转换的概念,以及使用 static_cast 将变量从一种类型转换为另一种类型。在本课中,我们将继续探讨另一种类型转换:dynamic_cast。dynamic_cast 的必要性 在处理多态性时,您会经常遇到以下情况 …

25.9 — 对象切片

让我们回到之前看过的例子: #include <iostream> #include <string_view> class Base { protected: int m_value{}; public: Base(int value) : m_value{ value } { } virtual ~Base() = default; virtual std::string_view getName() const { return “Base”; } int getValue() const { return m_value; } }; class …

25.3 — override 和 final 说明符,以及协变返回类型

为了解决继承的一些常见挑战,C++ 有两个与继承相关的标识符:override 和 final。请注意,这些标识符不是关键字——它们是普通单词,只有在特定上下文中才具有特殊含义。C++ 标准称它们为“具有特殊含义的标识符”,但它们通常被称为 …