我正在努力学习一些非常基本的东西,我希望有人可以帮助澄清。以伪C ++代码为例:
class T {
public
QMutex M;
int I;
}
如果我将该类实例化三次(作为3个线程),是否有3个独立且无关的M和I变量?或者所有3个实例共享相同的M和I变量?
如果一个类有多个可重入方法(例如:slot),并且它们访问M或I,那么它们是否正在访问该类的一个实例的M或I?
如何为类的每个INSTANCE提供自己的变量(其他实例无法访问)
答案 0 :(得分:1)
如果我实例化这个类三次(作为3个线程),是否有3个独立且无关的M和I变量?或者所有3个实例共享相同的M和I变量?
分开,因为这些变量是在堆栈上分配而不是堆。如果使用指向不同类实例中相同内存的指针,则可以通过堆对象共享内存值。
如果一个类有多个可重入方法(例如:slot),并且它们访问M或I,那么它们是否正在访问该类的一个实例的M或I?
是的,如果您使用类实例上的插槽,除非您明确尝试访问其他类实例,否则它们将访问这些插槽。
如何为类的每个INSTANCE赋予它自己的变量(其他实例无法访问)
就像你上面写的那样。 :-)虽然,请注意您编写了公共可访问性,因此最终您可以从任何实例访问任何实例,但这可能不是您尝试引用的。