Я занимаюсь программированием на C++ в течение некоторого времени, и я никогда не думал об этом до сегодняшнего дня.Почему в C++ не задан порядок методов в классе?
Рассмотрим следующий код:
struct foo
{
// compiles fine
void bar()
{
a = 1;
my_int_type b;
b = 5;
}
// Just a declaration, this fails to compile, which leads me to assume that
// even though the bar() method is declared and defined all at once, the
// compiler looks/checks-syntax-of the class interface first, and then compiles
// the respective definitions...?
void bar2(my_int_type); // COMPILE ERROR
my_int_type b; // COMPILE ERROR because it comes before the typedef declaration
typedef int my_int_type;
my_int_type a;
void bar3(my_int_type); // compiles fine
};
int main()
{
foo a;
a.bar();
return 0;
}
мое понимание того, почему возникают ошибки (см bar2()
комментарий выше) правильно/неправильно? В любом случае, я был бы признателен за упрощенное описание того, как однопроходный компилятор C++ будет компилировать приведенный выше код.
Довольно уверен, что я задал этот вопрос раньше ... :-) – Mehrdad
@Mehrdad: Я искал его, но не смог найти его с ключевыми словами, которые пришли мне на ум :) – Samaursa