C++ 面向对象设计(OOD)是一种程序设计范式,它围绕数据,或对象,而不是函数和逻辑来组织软件设计,它有助于创建模块化,可重复使用,以及可维护的代码. 本条提供了C++中的OOD的实用实例,并讨论了如何评价使用面向对象技术的性能影响.

面向对象设计的基本原则

OOD的核心原理包括封装、继承和多态性。封装涉及将数据和方法捆绑在类中。继承允许新类从现有类中产生,促进代码再利用。多态性可以将物体视为其父类的例子,促进灵活的代码。

实例:形状类等级

考虑形状的简单层次。 基类 [[FLT: 0]] 形状 [[FLT: 1]] 定义了所有形状的通用界面, 如计算区域。 衍生类如 [[[FLT: 2]] 循环 和 矩形 [ 执行特定行为 。

class Shape {
public:
 virtual double area() const = 0;
 virtual ~Shape() {}
};

class Circle : public Shape {
private:
 double radius;
public:
 Circle(double r) : radius(r) {}
 double area() const override {
 return 3.14159 * radius * radius;
 }
};

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

业绩考量

使用面向对象的特性会由于虚拟函数调用和动态内存分配等因素影响性能. 虚拟函数由于vable的仰望而引入了轻微的间接费用. 过度使用继承和动态内存也会影响效率.

性能优化提示

  • 最小化性能关键代码中的虚拟函数调用 。
  • 尽可能使用堆栈分配, 而不是动态内存 。
  • 更偏重于继承成分,以更简单的对象关系.
  • 用于识别与OOD特征相关的瓶颈的配置代码.