私下声明的对象变量的突变器/访问器方法
Mutator/Accessor methods for object variable declared in private
我有几个在类的私有声明的对象变量:
private:
a a1;
这个重载运算符最初是这个类的好友,并访问了下面所示的对象:
istream & operator >>( istream & input, class & m )
{
input >> m.a1;
return input;
}
ostream & operator <<( ostream & os, const class & m )
{
os << m.uni;
return os;
}
当运算符解除好友关系时,它应该不再有权访问私有变量。
我将如何访问这两个对象?是否使用访问器/突变器方法返回指向对象的指针?
编辑:更改了代码,以便更多地解释问题。
使用任何方法设置a1
和b1
的值。
您不必直接读取私有变量,还可以将值读取到某些临时变量中,然后使用这些值来修改a1
和b1
。或者创建一个全新的Results
并将其分配给m
。
整个访问器思想的要点是防止使用类的程序员做他不应该做的事情。 该类的作者没有预料到的事情。
根据定义,私有函数不适合"使用该类的每个人"使用。例如,这意味着输入有效性检查之类的东西没有到位 - 因为调用私有函数的代码应该执行这些检查(这 aviods 多次检查相同的情况。但是,如果每个人都可以访问,则冒着输入未经检查的结果的风险)。
是的,您可以通过在问题上抛出裸指针来解决访问器。访问权限仅在编译时由编译器检查,并且无法预测编译时函数是否位于"地址XYZ"。
但是,如果你甚至同意它,你就走错了路。操作员被取消好友是有充分理由的。可能是因为他一直在做朋友不应该做的事情。 朋友和受保护是两种非常特殊的情况,您有一个私人,有一些选择的例外。
你能控制这两个类吗?如果是这样,为什么要删除好友状态?
如果您无法控制:您做了什么来失去好友身份?你为什么要不遗余力地通过赤裸裸的指针彻底破坏班级的正常工作?
相关文章:
- 通过方法访问结构
- 为了访问方法,从基类动态转换为派生类
- 访问方法的返回类型
- 是否有对 Clang 递归 ASTVisitor 的最终访问方法
- 具有各种访问方法的自定义数据结构
- 另一个子模块错误的 omnet 访问方法 - 调用 'check_and_cast(cModule*&)' 没有匹配函数
- 使用矢量迭代器访问方法
- 从其他 C++ 文件访问方法
- C++箭头运算符重载.如何获取被访问方法的名称
- 访问方法C++时出现问题
- 易失性成员的访问方法
- 在实例化之前访问方法
- 是否不希望将指针存储在具有不同访问方法的多个容器中?
- 在c++中查看类中基于参数的私有变量的访问方法
- 在继承错误之后访问方法
- 最好的方法访问方法的派生类c++
- 是否存在具有多访问方法的可变模板变体
- 为指向类的指针数组制定访问方法时遇到问题
- 转发类,无法访问方法
- 我可以在 Python 中创建我的 C++ 对象,但无法访问方法