返回
《从结构到类的演变:C++ 进化的里程碑》
IOS
2023-11-12 14:35:01
从结构到类的演变
C++ 中的类是从结构演变而来的,因此可以说 C++ 是“带类的 C”。在定义结构体时,我们可以使用 private
修饰数据成员,从而实现封装性。如果没有指定修饰符,默认情况下数据成员是私有的,这意味着只能通过公开成员函数来访问它们。
以下是一个 C++ 结构体的示例:
struct Point {
int x;
int y;
};
我们可以通过 .
运算符来访问结构体成员:
Point p;
p.x = 10;
p.y = 20;
然而,结构体缺乏封装性和数据隐藏,这可能会导致代码的可维护性和可重用性降低。为了解决这些问题,C++ 引入了类。
类是封装数据的集合,它包括数据成员和成员函数。类中的数据成员默认是私有的,这意味着只能通过类的方法来访问它们。
以下是一个 C++ 类的示例:
class Point {
private:
int x;
int y;
public:
void setX(int x) { this->x = x; }
void setY(int y) { this->y = y; }
int getX() { return x; }
int getY() { return y; }
};
通过将数据成员封装在类中,我们可以控制对这些数据的访问,从而提高代码的安全性。此外,类还支持继承和多态,这进一步增强了代码的可重用性和灵活性。
继承
继承允许我们创建派生类,该派生类继承基类的所有成员,并可以定义自己独特的成员。派生类可以覆盖基类方法,从而实现多态行为。
以下是一个 C++ 继承示例:
class Shape {
public:
virtual double getArea() = 0;
};
class Rectangle : public Shape {
public:
double length;
double width;
double getArea() override { return length * width; }
};
class Circle : public Shape {
public:
double radius;
double getArea() override { return 3.14 * radius * radius; }
};
多态
多态允许我们使用基类指针或引用来调用派生类的方法。这意味着我们可以将不同类型的对象存储在一个集合中,并使用相同的接口来访问它们。
以下是一个 C++ 多态示例:
vector<Shape*> shapes;
shapes.push_back(new Rectangle(10, 20));
shapes.push_back(new Circle(5));
for (Shape* shape : shapes) {
cout << shape->getArea() << endl;
}
结论
C++ 中类和结构体的演变是一个重大进步,它提高了代码的可维护性、可重用性和灵活性。通过理解封装、继承和多态的概念,开发者可以充分利用 C++ 的面向对象编程特性,构建健壮且高效的应用程序。