📅  最后修改于: 2023-12-03 15:29:54.960000             🧑  作者: Mango
C++是一种支持面向对象编程(Object-Oriented Programming,OOP)的编程语言,它的设计初衷就是为了支持面向对象编程。面向对象编程是一种编程范式,它的核心是把问题看成对象之间的交互。
在C++中,每个对象都有自己的属性和方法。属性可以理解为对象的状态,方法可以理解为对象的行为。如下是一个简单的示例:
class Circle {
private:
double radius;
public:
void set_radius(double r) {
radius = r;
}
double get_radius() const {
return radius;
}
double area() const {
return 3.14 * radius * radius;
}
};
上述代码定义了一个名为Circle的类,类中有一个私有的double类型变量radius和三个公共的方法:set_radius、get_radius和area。set_radius方法用于设置圆的半径,get_radius方法用于获取圆的半径,area方法用于计算圆的面积。
在C++中,我们可以使用类来创建对象。如下是一个示例:
Circle c;
c.set_radius(2.0);
double r = c.get_radius();
double a = c.area();
上述代码创建了一个名为c的Circle对象,并通过set_radius方法设置其半径为2.0。然后通过get_radius和area方法获取了圆的半径和面积。
C++支持继承,即子类可以继承父类的属性和方法。如下是一个示例:
class Cylinder : public Circle {
private:
double height;
public:
void set_height(double h) {
height = h;
}
double get_height() const {
return height;
}
double volume() const {
return area() * height;
}
};
上述代码定义了一个名为Cylinder的类,它继承自Circle类。Cylinder类有一个私有的double类型变量height和三个公共的方法:set_height、get_height和volume。set_height方法用于设置圆柱的高度,get_height方法用于获取圆柱的高度,volume方法用于计算圆柱的体积。
在C++中,我们可以使用派生类来创建对象。如下是一个示例:
Cylinder cy;
cy.set_radius(2.0);
cy.set_height(3.0);
double v = cy.volume();
上述代码创建了一个名为cy的Cylinder对象,并通过set_radius和set_height方法设置其半径为2.0、高度为3.0。然后通过volume方法获取了圆柱的体积。
C++支持多态,即同一个方法可以在不同的对象中有不同的实现。如下是一个示例:
class Shape {
public:
virtual double area() const = 0;
virtual ~Shape() {}
};
class Rectangle : public Shape {
private:
double width;
double height;
public:
Rectangle(double w, double h) : width(w), height(h) {}
double area() const {
return width * height;
}
};
class Triangle : public Shape {
private:
double base;
double height;
public:
Triangle(double b, double h) : base(b), height(h) {}
double area() const {
return 0.5 * base * height;
}
};
上述代码定义了一个名为Shape的抽象类,它有一个纯虚方法area。然后定义了两个具体的类Rectangle和Triangle,它们分别实现了抽象类Shape中的area方法。
在C++中,我们可以使用指向基类对象的指针来实现多态。如下是一个示例:
Shape* p1 = new Rectangle(2.0, 3.0);
Shape* p2 = new Triangle(4.0, 5.0);
double a1 = p1->area();
double a2 = p2->area();
上述代码创建了一个指向Rectangle对象的指针p1,和一个指向Triangle对象的指针p2。然后通过这两个指针调用了各自的area方法,实现了多态。
C++中的面向对象编程是一种强大的编程范式,它的核心是把问题看成对象之间的交互。C++支持继承和多态,这使得代码更易于复用和扩展。掌握C++中的面向对象编程需要时间和实践,但毫无疑问,它值得我们去学习。