私人成员的作用是什么?
What is the role of private members?
#include<iostream>
class student
{
private:
int roll_no;
int standard;
public:
void input();
void display();
};
我问我的老师,让一些班级成员成为私人成员,让一些成员公开的意义。他说,出于安全原因,数据成员通常是私有的。他说,没有对象可以访问一个类的私有事物,这就是为什么它们是安全的。
我的问题是: 当我们开发软件时,我们将向用户分发可执行文件。用户将无法编辑代码。我们的老师在谈论什么类型的安全?当我创建了整个代码时,有人如何编辑它?对安全性有什么需要考虑的?
不,你的老师不会说封装,因为所谓的封装是为了安全。封装实际上存在还有其他一些原因:
- 创建更好的代码可维护性。当所有属性都是私有的和封装的时,代码的编写者只需更改方法即可轻松维护程序。
- 拥有受控的环境。封装允许用户通过对象以受控方式使用给定的对象。如果封装不存在,则客户端代码可以以他们想要的任何方式使用类的成员,而成员函数将其限制为特定行为。 隐藏
- 复杂性:隐藏与用户无关的复杂性。有时,某些属性和方法仅供内部使用,用户不必了解这些属性和方法。这使用户可以轻松使用该对象。
一个示例,说明如果没有封装会发生什么情况:
假设您有一个名为Human
的类,其中有一个名为age
的成员是公共的。现在,如果有人想修改它,比如说,基于输入,那么他们将不得不检查输入是否不是负数或每次都不是很大的数量,除非他们为它创建一个函数。现在,如果有一个成员函数提供对年龄的访问,那么它就不再是客户端代码的问题,因为字段的 setter 会处理它,因为类有责任确保其字段有效。
这不会影响应用程序的用户,但老师试图让您免受自己的错误。
尽可能将成员变量保持私有,可以防止您从代码中不应该这样做的地方意外访问和更改它们。
它还使代码用户清楚地知道哪些变量和函数打算从类外部使用,哪些不是,从而清楚地定义了类的API。
就像每个人都知道自己的秘密并且告诉别人有点危险一样,private members
不会接触其他类,因为它可能会破坏类中的某些内容,而其他类实际上不需要知道它们。
但是,人们需要沟通以满足他们的需求。我们交谈,解释我们的想法以被理解。好吧,public members
是这样的,它们需要类本身与其他类进行通信。
相关文章:
- "using namespace std;"在C++的作用是什么?
- 这个递归函数有什么作用?运行时的复杂性是多少?
- 此代码中的" "是什么,它的基本作用是什么?
- 在模板参数中使用 {} 在 type_trait{} 中时,其作用是什么<T>?
- <<、>>算子在循环中的作用是什么
- 在c++中,减号和加号对字符串的作用是什么
- i+=(i&-i) 有什么作用?它是便携式的吗?
- atomic_thread_fence的作用域是什么
- 窄集(_cast)的作用是什么
- clang的"-Ofast"选项在实践中有什么作用,特别是对于与gcc的任何差异?
- 在这种情况下,#define 的作用是什么?
- 遍历模板参数包,没有争论的专业化的作用是什么?
- 在 c++ 中,没有 **std::fixed** 的 **std::setprecision()** 的作用是什么?
- 访问多个阵列时 CPU 缓存的作用是什么?
- 以下表达式的作用是什么:x = (a1,a2,..,n);
- 私人成员的作用是什么?
- 这段代码的作用是什么?
- 变量声明中结构的作用域解析是什么意思
- 操作员过载的正确方法是什么,为什么这不起作用
- C++中没有大括号的for循环的作用域是什么