gpt4 book ai didi

C++封装,有什么用

转载 作者:行者123 更新时间:2023-12-02 10:16:33 28 4
gpt4 key购买 nike

下面的幻灯片是指 C++ 语言,它说

"encapsulation is about ensuring the user uses our ADT in a safe way"



但是,如果他可以访问我的 .h 文件,他可以编辑它,例如将我的类中声明的内容从私有(private)更改为公共(public)。

例如:

我的文件.h:
class Complex {
private:
double re, im;
public:
double get_re();
};

然后用户可以写:(从私有(private)更改为公共(public)后)
Complex s1;
s1.re=13;

请点击以下链接查看图片(因为我没有必要包含图片):
enter image description here

最佳答案

使用 C++,您可以通过多种方式击中您的脚。你也可以使用

#define private public

而且您无需更改代码中的任何内容即可访问私有(private)接口(interface)……这里的重点不是如何破坏封装,而是关于您使用它实现的目标。

当您必须在 class 之间做出选择时和 struct ,你必须考虑如果你要用它来表示什么,如果那个东西有一个不变量,那么你应该使用一个类,否则一个 struct: encapsulation 会让你使用封装来实现那个“不变量”,所以让用户仅使用您定义的公共(public)接口(interface)访问数据或设置/修改数据,而不是他想要的方式。

例如,如果您定义一个类 Date ,你有一个不变量,比如“最大 31 天,最大 12 个月……”,但是如果你想定义例如 DifferenceInDays , 它只有一个 int对于 days ,而不是您可以允许用户在该结构中读取和写入他想要的任何内容,因为您没有任何不变量

关于C++封装,有什么用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61720409/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com