Доступность элемента данных в функции-члене до объявления элемента данных - PullRequest
0 голосов
/ 20 марта 2012

Рассмотрим этот код:

class Test
{
public:

Test() { i = 0;  }

private:

int i;
};

Элемент данных 'i' используется даже до того, как он объявлен / определен.Разве это не должно быть ошибкой компиляции?(Отлично скомпилировано !!!)

Ответы [ 3 ]

1 голос
/ 20 марта 2012

Правило состоит в том, что функции-члены, определенные в определении класса, компилируются так, как если бы они были определены сразу после определения класса.

0 голосов
/ 20 марта 2012

где используется элемент данных до объявления?

class Test
{
public:

Test() { i = 0;  } // constructor

private:

int i;  //datamemeber
};
main()
{
Test obj; // memory allocated only here
}

конструктор вызывается после того, как в main создается только объект obj.тогда память для меня выделяется.и конструктор называется так что есть область видимости для i

0 голосов
/ 20 марта 2012

Нет, в контексте определения класса все элементы, члены данных или функции не должны иметь полной видимости.

...