📜  OOP在C++中的应用(1)

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

OOP在C++中的应用

什么是OOP?

OOP即面向对象编程(Object-Oriented Programming),它是一种编程思想和方法,利用类和对象的概念来组织和设计程序。

在OOP中,类是一种数据类型,它可以封装数据和方法,对象则是类的实例。

在C++中的实现

C++是一种面向对象的编程语言,它支持类、对象、继承、多态等OOP的特性。

类的定义和使用

下面是一个简单类的定义和使用示例:

class Person {
private:
  string name;
  int age;
public:
  void setName(string n) { name = n; }
  void setAge(int a) { age = a; }
  string getName() { return name; }
  int getAge() { return age; }
};

int main() {
  Person p;
  p.setName("Tom");
  p.setAge(21);
  cout << "Name: " << p.getName() << endl;
  cout << "Age: " << p.getAge() << endl;
  return 0;
}

在上面的示例中,定义了一个Person类,包含了name和age两个私有成员变量,以及四个公有成员函数(或方法),分别用于设置和获取成员变量的值。

在main函数中,创建了一个Person对象p,并使用成员函数设置和获取对象的成员变量值,最终输出结果。

继承和多态

继承是一种重要的OOP特性,它可以让子类继承父类的属性和方法,并可以重新定义和实现部分方法。

下面是一个简单的继承和多态示例:

class Shape {
public:
  virtual double getArea() { return 0; }
};

class Rectangle : public Shape {
private:
  double width, height;
public:
  Rectangle(double w, double h) : width(w), height(h) {}
  double getArea() { return width * height; }
};

class Circle : public Shape {
private:
  double radius;
public:
  Circle(double r) : radius(r) {}
  double getArea() { return 3.14 * radius * radius; }
};

int main() {
  Shape* shapes[2];
  shapes[0] = new Rectangle(5, 6);
  shapes[1] = new Circle(3);
  for (int i = 0; i < 2; i++) {
    cout << "Area: " << shapes[i]->getArea() << endl;
  }
  return 0;
}

在上面的示例中,定义了一个抽象类Shape,其中包含了一个纯虚函数getArea,表示计算图形的面积。另外,定义了Rectangle和Circle两个子类,它们分别继承了Shape类,并重新定义了getArea方法来计算矩形和圆形的面积。

在main函数中,创建了一个Shape类型的数组,它包含了两个形状(一个矩形和一个圆形)。使用循环遍历数组,并调用每个对象的getArea方法来计算它们的面积。

总结

在C++中,OOP是非常重要的技术和思想,它可以让程序更加模块化、可重用、易于维护。上面的示例只是一个简单的介绍,实际场景中还有更多复杂的应用和技巧。学会OOP是每个程序员必须掌握的基础知识之一。