30 July 2022

C++ 核心指南目录

C.8: Use class rather than struct if any member is non-public

理由

可读性更好。清晰的标明某些东西是隐藏的抽象的。即,只要数据结构中存在隐藏或抽象的数据,就用 class

例子

struct Date {
    int d, m;

    Date(int i, Month m);
    // ... lots of functions ...
private:
    int y;  // year
};

此代码没有任何语法错误。但是从设计角度来看,错误多多。私有成员变量和其他变量在代码中的位置分离的很开。不同区域的数据有不同的访问级别。所有这些导致了可读性变差、维护变得复杂。

注意

首先把接口放在类定义靠前的位置

强化

声明为 struct 的类如果有 privateprotected 成员,则标记警告