gpt4 book ai didi

c - 鲍勃·马丁 : "C has perfect encapsulation" HOW?

转载 作者:太空宇宙 更新时间:2023-11-04 01:17:45 25 4
gpt4 key购买 nike

Bob Martin 在这 video说“C 有完美的封装”。我不明白他为什么这么说......我知道我们可以在 .c 文件中分离实现并在 header .h 文件中声明接口(interface),但是没有什么能真正阻止我访问这样的实现细节:

主.c

#include <stdio.h>
#include "file1.h"
extern int x;
int main() {
printf("%d\n", x);
return 0;
}

文件1.c

int x = 5;

int getnum_file1() {
return x + 1;
}

文件1.h

int getnum_file1();

在这种情况下,main.c 可以访问 file1.c 中的实现细节。此代码还编译并执行了预期的结果。这是如何完美封装的??

最佳答案

一种确保封装的方法是将 x 声明为 static int x = 5;,因此它不会从外部对象可见(即使使用 外部).

显然,像x 这样的全局变量可以从另一个对象访问(通过链接器,通过您添加的extern)。然而,这通常会导致“意大利面条式”代码,其中变量可以从任何地方访问和/或修改,因为没有适当的封装(C 或 C++ 确实提供了避免这种情况的有用方法)。

关于c - 鲍勃·马丁 : "C has perfect encapsulation" HOW?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53426936/

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