C++ 的常函数和常对象
常对象指的是使用 const 关键字修饰的类对象,常函数指的是由 const 关键字修饰的函数。这里需要注意:只有成员函数才可以被 const 关键字修饰,而全局函数无法被 const 关键字修饰。 1. 常函数 {#title-0} ================= 在成员函数的后面加上 const, 该函数就变成了常函数,常函数会保证不修改成员变量的值,如果修改则...
常对象指的是使用 const 关键字修饰的类对象,常函数指的是由 const 关键字修饰的函数。这里需要注意:只有成员函数才可以被 const 关键字修饰,而全局函数无法被 const 关键字修饰。 1. 常函数 {#title-0} ================= 在成员函数的后面加上 const, 该函数就变成了常函数,常函数会保证不修改成员变量的值,如果修改则...
<p>函数对象有时也叫仿函数,其本质是一个类对象,由于重载函数调用符号,其可以像普通函一样使用。</p> <ol> <li>函数调用符号重载语法 {#title-0} ========================</li> </ol> <pre><code>class Demo ...
<p>在 C++11 标准中引入的 <code>default</code> 关键字,主要用于在类的声明中显式指定<strong>编译器生成默认的特殊成员函数实现</strong>。这些特殊成员函数包括:</p> <ol> <li>默认构造函数(default constructor...
智能指针的工厂函数是一个创建智能指针的函数,用于方便地创建特定类型的智能指针对象,这些函数通常都是以 make 开头的函数。比如 1. `std::make_unique` 用于创建 `std::unique_ptr` 实例 2. `std::make_shared` 用于创建 `std::shared_ptr` 实例 1. make_unique {#title-0} =...
`std::weak_ptr` 是 C++ 标准库中的一个智能指针类,用于解决 `std::shared_ptr` 可能引发的循环引用问题。循环引用可能导致内存泄漏,因为引用计数无法降为零,从而无法释放对象。 `std::weak_ptr`是一种弱引用,它允许你观测由 `std::shared_ptr` 管理的对象,但不会增加对象的引用计数。换句话说,`std::weak_p...
<p>C++ 的 <code>shared_ptr</code> 是 C++11 标准引入的智能指针之一,用于管理动态分配的对象的所有权。它允许多个 <code>shared_ptr</code> 实例共享对同一对象的所有权,而不会出现内存泄漏或者悬空指针的情况。<code>shared_ptr</c...
<p><code>unique_ptr</code> 提供了一种独占所有权的智能指针,允许动态分配的对象在其生命周期结束时自动释放内存。这种特性在 C++11 中是非常有用的,因为它有助于避免内存泄漏和悬挂指针等常见问题,同时也提高了代码的安全性和可靠性。</p> <p>我们重点从以下几个方面来学习 unique_pt...
<p><code>auto_ptr</code> 是 C++98 中引入的智能指针,用于自动管理动态分配的对象的生命周期。然而,它在 C++11 中已被标记为已废弃,并且在 C++17 中已被移除,因为它存在一些严重的缺陷和安全问题。</p> <ol> <li>auto_ptr 用法 {#title-0} ...
`Type Traits` 是 C++11 中的一种模板元编程技术,它提供了一系列的模板类和函数,用于在**编译时**查询和操作类型信息。这些类型特征可以用于泛型编程中,帮助我们编写更加灵活、通用和安全的代码。 例如:判断一个类型是否为指针类型、是否为整数类型、是否可以进行拷贝构造等等。这使得我们可以根据类型的属性来做出不同的编译时决策,从而避免在运行时出现错误或者不必要的性...
<p>C++ 是一种静态类型语言,数据类型在编译时确定。但在有些场景下,编译时无法确定数据类型,需要在运行时才能确定。RTTI(Run Time Type Identification,运行时类型识 别)就是一种能够在运行时动态确定数据类型的机制。</p> <ol> <li>RTTI 应用场景 {#title-0}</li&...