Объявление класса хранения как статического члена в классе хоста - PullRequest
0 голосов
/ 24 апреля 2019

Я пишу служебное приложение в процедурном объектно-ориентированном стиле, собирая модули как классы хранения.

Используя следующий подход:

class A
{
    public:
       static int foo;
};

class B
{
    public:
       static A bar;
};

class C
{
    public:
       A bar;
};

В чем разница междуповедение классов B и C?

Редактировать: Чем отличается время жизни класса хранения A при объявлении статического в классе B от того, когда оно объявлено нестатичным в классе C?

1 Ответ

0 голосов
/ 24 апреля 2019

Класс B объявляет статический член A класса B, что означает, что он не связан с экземплярами класса, но доступен всем экземплярам класса.Каждый экземпляр может обновить его, а другие увидят обновление.

Класс C объявляет нестатический член A класса C, что означает, что он связан с экземпляромкласс.Каждый экземпляр имеет своего члена класса А.Изменение одного не повлияет на другие.

Поскольку A является общедоступным как в классе B, так и в классе C, любой может получить доступ к объекту класса A в соответствии с описанными правилами.

Кстати, если fooобъявленный как static, foo не связан ни с одним экземпляром класса A. Таким образом, даже если C содержит нестатический A, сам foo будет статическим и доступным через любой экземпляр B или C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...