今天我要说的是非标准数据类型——class(类)。

还是一样,先复习旧的知识:

基本数据类型:

整型 <mark>int / long / long long</mark>
布尔型 <mark>bool</mark>
字符型 <mark>char</mark>
实型
→ 单精度型 / 浮点型 <mark>float</mark>
→ 双精度型 <mark>double</mark>

非基本数据类型:

数组 <mark>[ ]</mark>
指针 <mark>*</mark>
空类型 <mark>void</mark>
结构体 <mark>struct</mark>
联合体 <mark>union</mark> √
枚举 <mark>enum</mark> √
类 <mark>class</mark> √

1、 class简介:

在C++中,类(Class)是一种用户自定义的数据类型,它允许您将数据和函数捆绑在一起,形成一个逻辑实体。类是面向对象编程(OOP)的基础,它提供了一种将数据和相关操作组织在一起的方式,使得代码更加模块化、可重用和易于理解。

  1. 数据成员(Data Members): 类可以包含数据成员,也称为属性或字段,用于存储对象的状态或属性。这些数据成员可以是各种数据类型,包括基本类型(如整数、浮点数)或其他类类型。

  2. 成员函数(Member Functions): 类可以包含成员函数,也称为方法或操作,用于操作对象的数据成员。这些成员函数可以访问和修改对象的数据,以执行特定的操作。

  3. 访问控制(Access Control): 类可以通过访问控制符来限制对其成员的访问。C++提供了三种访问控制级别:public(公有)、protected(受保护)和private(私有)。默认情况下,类的成员是私有的,只能在类的内部访问,但您可以使用访问控制符来更改这种行为。

  4. 封装(Encapsulation): 类支持封装,这意味着它可以隐藏实现的细节,只暴露必要的接口给外部。通过将数据成员私有化并提供公有的访问函数,类可以控制对其数据的访问,从而提高安全性和灵活性。

  5. 构造函数和析构函数(Constructor and Destructor): 类可以包含构造函数和析构函数,用于对象的初始化和清理。构造函数在对象创建时调用,而析构函数在对象销毁时调用,可以用来释放资源或执行其他清理操作。

  6. 类的实例化(Instantiation): 类的实例化创建了类的对象,也称为类的实例。可以使用类名和构造函数来实例化对象,并且可以创建多个对象来代表不同的实体。

  7. 继承(Inheritance): 类可以通过继承来派生新的类,从而创建类层次结构。子类(派生类)可以继承父类(基类)的成员,包括数据成员和成员函数,并且可以添加新的成员或覆盖父类的成员。

  8. 多态(Polymorphism): 类的多态性允许使用基类的指针或引用来引用派生类的对象,并且可以在运行时动态绑定到正确的函数。多态性可以通过虚函数和纯虚函数来实现。

总之,类是C++中的基本构造块,它允许您将数据和函数组织在一起,形成一个独立的、可重用的代码单元。通过封装、继承和多态等特性,类提供了一种强大的方式来设计和实现复杂的代码。

2、 class的深究和使用注意事项:

在深入使用C++中的类时,以下是一些注意事项和深入探讨的方面:

构造函数和析构函数的设计: 构造函数负责初始化对象的状态,而析构函数负责清理对象所使用的资源。在设计这两个函数时,需要考虑对象的生命周期和资源管理,确保正确地初始化和清理对象。
继承与多态的运用: 继承和多态是面向对象编程的核心概念,它们允许您创建更具灵活性和可扩展性的代码。在使用继承时,要注意继承的合理性和层次结构的设计,以避免出现过度复杂或不必要的继承关系。而在使用多态时,要注意正确地设计和使用虚函数,以实现运行时的动态绑定。
封装的实践: 封装是面向对象编程的重要原则之一,它有助于隐藏实现的细节,提高代码的安全性和可维护性。在实践中,要注意封装的适度和接口的设计,确保暴露给外部的接口是简洁、清晰和易于使用的。
友元函数和友元类的使用: 友元函数和友元类允许在一定程度上突破类的封装性,但需要谨慎使用,以避免破坏封装和增加代码的复杂性。
内存管理和对象生命周期: 在使用类时,要注意对象的内存管理和生命周期,避免内存泄漏和悬空指针等问题。可以使用智能指针等RAII(资源获取即初始化)技术来简化内存管理,确保资源在对象生命周期结束时被正确释放。
异常处理: 在类的设计和使用中,要考虑异常处理机制,确保代码能够正确地处理异常情况,并且不会导致对象状态不一致或资源泄漏等问题。
性能优化: 在使用类时,要注意性能优化的问题,避免不必要的对象拷贝和动态内存分配等操作,以提高代码的执行效率和性能。

综上所述,深入研究和使用C++中的类需要理解面向对象编程的基本原则,并在实践中注意设计的合理性、封装的适度、继承与多态的运用、内存管理和异常处理等方面。同时,要不断学习和积累经验,掌握更高级的技巧和最佳实践,以编写出高质量、高效率的C++代码。

<mark>是不是感觉有点枯燥无味?没事,用代码来实践!</mark>

3、关于class的例子:

这是一个表示猫的简单 <mark>类</mark>:

#include <iostream>
#include <string>

class Cat {
   
public:
    // 成员变量
    std::string name;
    int age;

    // 构造函数
    Cat(std::string catName, int catAge) {
   
        name = catName;
        age = catAge;
    }

    // 成员函数
    void displayInfo() {
   
        std::cout << "Cat's name: " << name << std::endl;
        std::cout << "Cat's age: " << age << " years old" << std::endl;
    }
};

int main() {
   
    // 创建一个 Cat 对象
    Cat myCat("Whiskers", 3);

    // 使用成员函数显示猫的信息
    myCat.displayInfo();

    return 0;
}

在这个例子中,Cat 类有两个公有成员变量 name 和 age,分别表示猫的名字和年龄。类包含一个公有的构造函数用于初始化这些成员变量,并包含一个公有的成员函数 <mark>displayInfo()</mark> 用于显示猫的信息。在 main() 函数中,创建了一个 Cat 对象,并演示了如何使用成员函数显示猫的信息。

<mark>完结撒花!!!期待下次的struct!</mark>