类和对象

1. 概述

在面向对象编程(OOP)中,类和对象是两个核心概念。类是对象的蓝图或模板,而对象是类的实例。通过类,我们可以定义对象的属性和行为。

2. 类的定义

类是用户定义的数据类型,它包含数据成员(属性)和成员函数(方法)。类的定义通常包括类的名称、数据成员和成员函数。

2.1 基本语法

class ClassName {
    // 访问修饰符:
    // public: 成员可以被任何代码访问
    // private: 成员只能被类的成员函数访问
    // protected: 成员可以被类的成员函数和派生类访问

    // 数据成员
    int dataMember;

    // 成员函数
    void memberFunction() {
        // 函数体
    }
};

2.2 示例:定义一个简单的类

class Rectangle {
private:
    int width, height;

public:
    void setDimensions(int w, int h) {
        width = w;
        height = h;
    }

    int area() {
        return width * height;
    }
};

在这个例子中,Rectangle 类有两个私有数据成员 width 和 height,以及两个公有成员函数 setDimensions 和 area。

3. 对象的创建

对象是类的实例。我们可以通过定义一个类的对象来使用类中定义的属性和方法。

3.1 基本语法

ClassName objectName;

3.2 示例:创建对象

Rectangle rect;
rect.setDimensions(5, 10);
std::cout << "Area: " << rect.area() << std::endl;

在这个例子中,我们创建了一个 Rectangle 类的对象 rect,并调用了 setDimensions 和 area 方法。

4. 访问修饰符

C++ 提供了三种访问修饰符:

  • public: 成员可以被任何代码访问。
  • private: 成员只能被类的成员函数访问。
  • protected: 成员可以被类的成员函数和派生类访问。

4.1 示例

class Circle {
private:
    double radius;

public:
    void setRadius(double r) {
        radius = r;
    }

    double getArea() {
        return 3.14159 * radius * radius;
    }
};

在这个例子中,radius 是私有的,因此不能直接从类的外部访问。我们通过公有的 setRadius 和 getArea 方法来操作 radius。

5. 构造函数和析构函数

构造函数和析构函数是类的特殊成员函数,分别在对象创建和销毁时自动调用。

5.1 构造函数

构造函数用于初始化对象的数据成员。构造函数的名称与类名相同,没有返回类型。

class Point {
private:
    int x, y;

public:
    Point(int xCoord, int yCoord) {
        x = xCoord;
        y = yCoord;
    }
};

5.2 析构函数

析构函数用于在对象销毁时执行清理操作。析构函数的名称与类名相同,前面加上波浪号 ~,没有返回类型和参数。

class MyClass {
public:
    ~MyClass() {
        // 清理代码
    }
};

6. 实践练习

6.1 练习1:定义一个 Student 类

定义一个 Student 类,包含以下成员:

  • 私有数据成员:name(字符串)、age(整数)、gpa(浮点数)。
  • 公有成员函数:setName、setAge、setGpa、getName、getAge、getGpa。

6.2 练习2:创建 Student 对象并操作

创建一个 Student 对象,设置其 name、age 和 gpa,然后输出这些信息。

6.3 练习3:添加构造函数和析构函数

为 Student 类添加一个带参数的构造函数,用于初始化 name、age 和 gpa。同时添加一个析构函数,输出一条消息表示对象被销毁。

7. 总结

类和对象是面向对象编程的基础。通过类,我们可以定义对象的属性和行为,并通过对象来使用这些属性和行为。理解类和对象的概念,以及如何使用构造函数和析构函数,是掌握面向对象编程的关键。

8. 下一步

在掌握了类和对象的基本概念后,你可以继续学习封装、继承和多态等面向对象编程的高级特性。这些特性将进一步增强你对面向对象编程的理解和应用能力。