24 July 2022

C++ 核心指南目录

C.3: Represent the distinction between an interface and an implementation using a class

理由

明确区分接口和实现,提升代码可读性,简化维护复杂度。

例子

class Date {
public:
    Date();
    // validate that {yy, mm, dd} is a valid date and initialize
    Date(int yy, Month mm, char dd);

    int day() const;
    Month month() const;
    // ...
private:
    // ... some representation ...
};

Date 类提供了对象初始化和数据访问的外部接口,类内部的数据结构可以有不同的实现。这样,更改内部实现,不需要用户修改代码。(可能需要重新编译)。

注意

通过类的定义区分外部接口和内部实现不是唯一的方法。

其他方法,还可以在名字空间声明一组相关的函数;抽象的基类;函数模板等。

关键是把接口和实现区分开来。

理想情况,接口比内部实现更稳定,不太变更。