📜  C++类和对象(1)

📅  最后修改于: 2023-12-03 15:29:55.594000             🧑  作者: Mango

C++类和对象

C++是一种面向对象的编程语言,类是C++面向对象编程的核心。类定义了一个对象的结构,包括它有哪些数据和函数,以及它们如何被访问和操作的方法。

定义类

在C++中,通过class或struct关键字来定义一个类。类的定义包括访问修饰符,即public、private和protected:

class MyClass {
  public:
    // 成员函数和数据成员可以被外部访问
  private:
    // 成员函数和数据成员只能在类内部访问
  protected:
    // 成员函数和数据成员在继承类中也可以访问
};
创建对象

类定义了一个对象的结构,但实际上只有创建了对象才能在代码中使用类和对象的功能。通过类可以定义多个对象,每个对象都有自己的状态和行为。

MyClass myObject; // 创建一个对象
访问成员

成员函数和数据成员可以通过对象的点号(.)来访问:

myObject.memberFunction(); // 调用成员函数
myObject.dataMember = 10; // 给数据成员赋值
构造函数和析构函数

类可以有构造函数和析构函数。构造函数被用于定义对象创建时的初始化操作,析构函数则用于在对象销毁时执行清理操作。

class MyClass {
  public:
    // 构造函数
    MyClass() {
        cout << "对象被创建了" << endl;
    }
    // 析构函数
    ~MyClass() {
        cout << "对象被销毁了" << endl;
    }
};
类的继承

继承是OOP中常用的一种技术,它允许一个类继承另一个类的数据和函数成员,从而扩展和重用代码。

class DerivedClass : public BaseClass {
  // ...
};

DerivedClass继承了BaseClass的所有public和protected成员。在DerivedClass中可以使用BaseClass中的成员函数和数据成员,也可以新增自己的成员。

多态性

多态性是OOP中的另一个重要概念。它允许不同的对象对相同的消息做出不同的响应,这种能力称为动态分派。

class Shape {
  public:
    virtual void draw() {
        cout << "绘制图形" << endl;
    }
};

class Rectangle : public Shape {
  public:
    void draw() {
        cout << "绘制矩形" << endl;
    }
};

class Circle : public Shape {
  public:
    void draw() {
        cout << "绘制圆形" << endl;
    }
};

int main() {
    Shape *shape; // 定义一个Shape类型的指针
    Rectangle rectangle;
    Circle circle;
    // 运行时分派
    shape = &rectangle;
    shape->draw(); // 绘制矩形
    shape = &circle;
    shape->draw(); // 绘制圆形
    return 0;
}

在这个例子中,Shape是一个基类,Rectangle和Circle是派生类。基类Shape中定义了一个虚函数draw(),派生类Rectangle和Circle继承了该函数,并重写了draw()函数,实现各自的绘制方法。在main函数中,定义了一个Shape类型的指针,指向派生类对象,并在运行时分派时调用draw()函数,实现了多态性。