Общие переменные Qt / C ++ и видимость между экземплярами классов

Я борюсь с чем-то очень простым, что я надеюсь, что кто-то может помочь прояснить. Возьмем, к примеру, этот псевдо-код C ++:

class T {
public
QMutex M;
int I;
}
  1. Если я создаю экземпляр этого класса три раза (как 3 потока), существуют ли 3 отдельные и не связанные переменные M и I? Или все 3 экземпляра имеют одну и ту же переменную M и I?

  2. Если у класса есть несколько методов с повторным входом (например, слоты), и они обращаются к M или I, получают ли они доступ к M или I этого одного экземпляра класса?

  3. Как я могу дать каждому INSTANCE класса свою собственную переменную (не доступную для других экземпляров)

1

Решение

Если я создаю экземпляр этого класса три раза (как 3 потока), существуют ли 3 отдельные и не связанные переменные M и I? Или все 3 экземпляра имеют одну и ту же переменную M и I?

Отдельно, потому что эти переменные расположены в стеке, а не в куче. Вы можете разделить значения памяти объектами кучи, если используете указатели, которые указывают на одну и ту же память в разных экземплярах классов.

Если у класса есть несколько реентерабельных методов (например, слотов), и они обращаются к M или I, получают ли они доступ к M или I этого одного экземпляра класса?

Да, если вы используете слоты в экземпляре класса, они получат к ним доступ, если вы явно не попытаетесь получить доступ к другим экземплярам класса.

Как я могу дать каждому INSTANCE класса свою собственную переменную (не доступную для других экземпляров)

Так же, как вы написали выше. 🙂 Хотя, обратите внимание, что вы написали общедоступную доступность, чтобы в конечном итоге вы могли получить к ним доступ из любого экземпляра из любого экземпляра, но, вероятно, это не то, к чему вы пытаетесь обратиться.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]