gpt4 book ai didi

c++ - 源文件中未公开的私有(private)成员变量与全局变量

转载 作者:可可西里 更新时间:2023-11-01 18:27:39 25 4
gpt4 key购买 nike

我正在查看我目前工作的公司的一些代码,我在 *.cpp 文件中看到一些(不是很多)静态全局变量声明(例如,到存储监听器列表),其中 .h/.cpp 文件属于一个类。如果一个变量(静态或其他)仅由类本身使用,我总是将其声明为私有(private)的。

这比声明变量私有(private)有优势吗?这是不好的做法吗?或者当声明仅由类使用而没有其他人使用的静态变量时,这是否正常?

EDIT: In my question I asked about static, but what if it is a non-static global variable in the .cpp file instead of it being a private member of the class? Is that bad practice or considered ok? Any advantages in this case?

最佳答案

从风格的角度来看,这可能是好的,也可能不是,但风格是主观的。

从技术的角度来看,有几个区别:

                             +----------------+-------------+
| Private Static | File Static |
+----------------------------+----------------+-------------+
| Visible by includers | Yes | No |
+----------------------------+----------------+-------------+
| Accessible to friend | Yes | No |
+----------------------------+----------------+-------------+
| Accessible to all in TU* | No | Yes |
+----------------------------+----------------+-------------+
| Require #include in header | Yes | No |
+----------------------------+----------------+-------------+

*TU: Translation Unit (roughly put: the source file after include resolution)

因此,从技术上讲,文件范围内的static 变量(或匿名命名空间中的变量)可以是更多私有(private)的,除了它对所有代码可见在源文件中遵循它(这在一定程度上改变了可访问性)。

出于这些客观原因,我个人更喜欢它们。我倾向于让我的 header 尽可能空,因为它使更改更容易而不影响客户端(而且我大部分时间都是客户端!)

注意:如果我忘记了差异,请告知/编辑

关于c++ - 源文件中未公开的私有(private)成员变量与全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5463229/

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