【问题标题】:Is initializing variables in a namespace similar to initializing them as a class member?在命名空间中初始化变量是否类似于将它们初始化为类成员?
【发布时间】:2019-01-24 11:17:18
【问题描述】:

换句话说:可以说命名空间像类一样具有成员变量和函数吗?

【问题讨论】:

  • 并非如此,因为您不能拥有命名空间的实例。
  • 并非如此。一个类的所有成员(至少在语法上)都在与该类同名的命名空间中,但命名空间中的变量和函数不一定在任何类中。命名空间也不能被构造或破坏。
  • 感谢@QuantumPete!我不知道为什么我被否决了,但感谢您抽出时间回答我的问题!

标签: c++ class namespaces


【解决方案1】:

没有。

术语成员、成员变量、成员函数和方法通常仅用于类(结构)变量和函数。

命名空间中的函数只是命名空间范围内的函数,就像变量只是命名空间范围内的变量一样。

除了命名空间和类在访问和其他方面的区别之外,这里最重要的区别是你可以创建一个类的多个对象,然后每个对象都将它们的数据保存在它们的成员变量中,并且方法 == 成员函数起作用在这个数据上。

【讨论】:

  • 谢谢!这为我清除了一切!我不知道为什么我被否决了,但感谢您抽出时间回答我的问题!
【解决方案2】:

不是真的。 namespace 用于限制变量、函数和类的范围。这意味着通过将它们放入命名空间,您可以在代码中出现相同的命名函数,并通过使用命名空间来区分它们。

一个类旨在表示一组自包含的数据(变量)以及一组要对该数据执行的操作(函数)。

虽然您可以拥有只有静态成员和只有可公开访问的变量的类,但您开始失去类的优势(和重点)。

【讨论】:

  • 更一般地说,命名空间限制了 names 的范围(当然,预处理器宏除外)。 “变量、函数和类”涵盖了许多常用的名称,但并未涵盖所有这些名称; typedef 名称和模板立即浮现在脑海中。 +1。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-19
  • 1970-01-01
  • 2013-01-07
相关资源
最近更新 更多