Qt / C ++共享变量和跨类实例的可见性

时间:2013-10-03 16:20:22

标签: c++ qt visibility qtcore qmutex

我正在努力学习一些非常基本的东西,我希望有人可以帮助澄清。以伪C ++代码为例:

class T {
  public
    QMutex M;
    int I;
}
  1. 如果我将该类实例化三次(作为3个线程),是否有3个独立且无关的M和I变量?或者所有3个实例共享相同的M和I变量?

  2. 如果一个类有多个可重入方法(例如:slot),并且它们访问M或I,那么它们是否正在访问该类的一个实例的M或I?

  3. 如何为类的每个INSTANCE提供自己的变量(其他实例无法访问)

1 个答案:

答案 0 :(得分:1)

  

如果我实例化这个类三次(作为3个线程),是否有3个独立且无关的M和I变量?或者所有3个实例共享相同的M和I变量?

分开,因为这些变量是在堆栈上分配而不是堆。如果使用指向不同类实例中相同内存的指针,则可以通过堆对象共享内存值。

  

如果一个类有多个可重入方法(例如:slot),并且它们访问M或I,那么它们是否正在访问该类的一个实例的M或I?

是的,如果您使用类实例上的插槽,除非您明确尝试访问其他类实例,否则它们将访问这些插槽。

  

如何为类的每个INSTANCE赋予它自己的变量(其他实例无法访问)

就像你上面写的那样。 :-)虽然,请注意您编写了公共可访问性,因此最终您可以从任何实例访问任何实例,但这可能不是您尝试引用的。