访问权限

如果有必要,可以在结构体说明中使用特殊关键字,这些关键字代表访问修饰符,可以限制字段在结构体外部的可见性。有三个修饰符:publicprotectedprivate。默认情况下,所有结构体成员都是公共的,这相当于下面的条目(以 Result 结构体为例):

struct Result
{
public:
   double probability;
   double coef[3];
   int direction;
   string status;
   ...
};

修饰符下面的所有成员都会获得相应的访问权限,除非遇到另一个修饰符或结构块结束。可以有许多具有不同访问权限的部分,但它们可以被任意修改。

标记为 protected 的成员只能从该结构体及其后代结构体的代码中访问,即假定这些成员必须有公共方法,否则任何对象都无法访问这些字段。

标记为 private 的成员只能在该结构体的代码中访问。例如,如果在 status 字段之前添加 private,则很可能需要一个方法来通过外部代码 (getStatus) 读取状态。

struct Result
{
public:
   double probability;
   double coef[3];
   int direction;
   
private:
   string status;
   
public:
   string getStatus()
   {
      return status;
   }
   ...
};

只能通过第二个构造函数的参数设置状态。直接访问该字段将导致错误“无法访问结构体 'Result' 的私有成员 'status'”:

// error:
// cannot access to private member 'status' declared in structure 'Result'
r.status = "message";

在类中,默认访问权限为 private。这遵循封装原则,我们将在 关于“类”的章节中进行介绍。