c++ - 关于const或friendship的使用

标签 c++

我正在使用某种“管理器”来存储“上下文”类,在某些情况下我想将此“上下文”传递给其他函数以从中读取数据。

实际上,当管理器将这个“上下文”传递给一个函数时,它传递了一个“const&上下文”,并且我上下文有一些函数声明为 const(用于读取)和其他不是 const 的函数(因为管理器必须更改上下文中的数据)

现在,我问自己,如果我只做私有(private)修改器和给经理友元有什么区别吗?

我想应该是有区别的。 我知道,这是一个特例,但对我来说,C++ 仍然有很多魔力。

最佳答案

根据我使用 C++ 的经验,拥有私有(private)修改器并提供友元与拥有公共(public)修改器不提供友元之间的主要区别在于,第二种选择允许您不提供任何信息访问权限,而只是确定。假设您创建了一个名为 Student 的类,它有 2 个子类。普通学生和教师助理。很多时候学生太多,老师很难照顾到一切,所以他会把最好的学生当助教。当程序查看这些学生时,他们应该比普通学生有更多访问学生信息的权限。对于私有(private)修改器和给予友元,您是在说某些信息(例如考试成绩)是私有(private)的,但可能会被助教更改。另一方面,如果您有公共(public)突变器并且没有友元,则普通学生可能会访问该信息并更改成绩。

希望这对您有所帮助。

关于c++ - 关于const或friendship的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21586422/

相关文章:

c++ - LNK2038 错误 VC++ 2013

c++ - VS2015 预览 : NDK_ROOT is not defined

c++ - 比较两个 QMap

c++ - 由于某种原因,我的 ram 上的 int 重量超过 32 位

c++ - 这个函数调用 "delay+(1000)"在语法上是否正确?

c++ - 如何通过交换边使图强连通

c++ - 在 C++ 应用程序中构建/编译 libcurl 时遇到问题

c++ - C fread/C++ 读取函数奇怪的内存消耗,基于 Linux sysinfo 数据

c++ - boost 序列化单例和 sanitizer : null reference

c++ - 如何设置对 boost::shared_array 的期望