1. 首页
  2. 编程语言
  3. C++ 
  4. C++的存取控制-learning ros for robotics programming - second edition

C++的存取控制-learning ros for robotics programming - second edition

上传者: 2024-07-24 00:06:16上传 PDF文件 14.32MB 热度 17次

在任何关系中,存在相关各方都遵从的边界是很重要的。当我们建立了一个库之后,我们就与该库的用户(也可以叫用户程序员)建立了一种关系,他是另外的程序员,但他需要用我们的库来编写一个应用程序或用我们的库来建立更大的库。在C语言中,struct同其他数据结构一样,没有任何规则,用户可以在struct中做他们想做的任何事情,没有办法来强制任何特殊的行为。比如,即使我们已经看到了上一章中提到的initialize()函数和cleanup()函数的重要性,但用户有权决定是否调用它们(我们将在下一章看到更好的方法)。再比如,我们可能不愿意让用户去直接处理struct中的某些成员,但在C语言中没有任何方法可以阻止用户。一切都是暴露无遗的。

需要控制对结构成员的存取有两个理由:一是让用户避开一些他们不需要使用的工具,这些工具对数据类型内部的处理来说是必须的,但对用户特定问题的接口来说却不是必须的。这实际上是为用户提供了方便,因为他们可以很容易地知道,对他们来说哪些是重要的,哪些是可以忽略的。二是设计者可以改变struct的内部实现,而不必担心对用户程序员产生影响。在上一章stack的例子中,我们想以大块的方式来分配存储空间,提高速度,而不是在每次增加成员时调用malloc()函数来重新分配内存。如果这些库的接口部分与实现部分是清楚地分开的,并作了保护,那么我们只需要让用户重新连接一遍就可以了。

C++语言引进了三个新的关键字,用于在struct中设置边界:publicprivate和protected。它们的使用和含义从字面上就能理解。这些存取指定符只在struct声明中使用,它们可以改变在它们之后的所有声明的边界。使用存取指定符,后面必须跟上一个冒号。public意味着在其后声明的所有成员对所有的人都可以存取。public成员就如同一般的struct成员。比如,下面的struct声明是相同的。

对于那些想进一步了解存取控制的人,可以参考数据库中的存取控制,这个资源详细解释了自主存取控制和强制存取控制的差别,以及各自的应用场景。如果对C++编程中的成员访问控制有更多兴趣,可以查阅这篇文章以获取更多详情。

下载地址
用户评论