C++ 为什么C++;?

C++ 为什么C++;?,c++,global-variables,C++,Global Variables,如果您使用的是正确的OOP概念,我没有得到任何实际需要全局变量的用例,在我的应用程序中,我没有使用任何全局变量,并且能够使用面向对象的原则高效地实现一切 每个类都有自己的职责,所以我想知道为什么要使用全局变量 有人能告诉我任何需要使用全局变量的用例吗?这显然是一种偏向Java/C的方法。当整个程序需要熟悉共享数据时,全局变量有时是有用的 尽管Java和C#明确指出“不需要全局变量,一切都应该驻留在一个类中”,但几乎每个托管项目中都存在“Utils”和“Helpers”类,这清楚地表明了相反的情况

如果您使用的是正确的OOP概念,我没有得到任何实际需要全局变量的用例,在我的应用程序中,我没有使用任何全局变量,并且能够使用面向对象的原则高效地实现一切

每个类都有自己的职责,所以我想知道为什么要使用全局变量

有人能告诉我任何需要使用全局变量的用例吗?

这显然是一种偏向Java/C的方法。当整个程序需要熟悉共享数据时,全局变量有时是有用的

尽管Java和C#明确指出“不需要全局变量,一切都应该驻留在一个类中”,但几乎每个托管项目中都存在“Utils”和“Helpers”类,这清楚地表明了相反的情况

脑海中浮现的案例:

  • 全局可用宏,如
    EOF
  • std::cout
    std::cin
  • 程序的当前区域设置
  • 进程的堆指针
当然,强烈建议找到合适的类或名称空间,但不是强制性的


另外,我对“恰当的OOP概念”这个术语非常困惑。“适当”是特定于语言的。在一种语言中可能是正确的东西,在另一种语言中显然不是“正确的” <> P>语言中真正的全局变量的唯一原因是它们在C中可用,其中C++是直接后裔。p> C++是“一个更好的C”,因为它支持使用C完成的编程风格,具有更好的类型检查和更多的符号支持(不会损失效率)


这就是为什么全局变量的功能还没有从语言中删除。

全局变量有时很尴尬的原因是很难找到它们被修改的每个地方。给它们一个更复杂的名称(即,通过将它们作为类中的静态变量编写,la Java)不会改变这一点。全局变量(通过任何机制)消除了将整个程序中使用的状态信息传递给本身不需要它但直接或间接调用其他确实需要它的函数的需要。这种杂波被称为“流浪数据”,并且在许多方面比全局数据更差。

一个通用的全局变量是“代码> STD::CUT……C++被设计为超越诸如OOP这样的时尚。这并不导致全局变量有用或不可用,但它表明“OOP,你这样做”不是很多C++设计决策的相关参数。类中的私有静态变量==内部链接全局变量。如果你觉得你需要使用一个,你可以用同样的方法使用另一个。@Revolver\u Ocelot,完美陈述。Java和C#后台的家伙们模仿其他语言的全局变量,甚至不停地认为它们的许多静态内容都是一样的。我想知道cpp是否缺少一些语言特性,因为我们需要使用全局变量如果有一种语言不缺少特性,是CPP语言:)所以不是。这是一个很好且信息丰富的答案,但没有回答问题。