1

我正在努力解决一些非常基本的问题,我希望有人可以帮助澄清。以这个伪 C++ 代码为例:

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

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

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

4

1 回答 1

1

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

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

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

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

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

就像你在上面写的一样。:-) 虽然,请注意您编写了公共可访问性,因此最终您可以通过任何实例从任何实例访问它们,但这可能不是您要引用的内容。

于 2013-10-03T16:29:55.617 回答