Эта строка:
private:
HANDLE m_hEventLog;
является объявлением переменной m_hEventLog
. Это означает, что когда будет объявлен объект типа MyGlobalModule
, он будет содержать член с именем m_hEventLog
. Когда объект объявлен или, другими словами, создан , вызывается конструктор. Он выполняет следующую строку:
m_hEventLog = RegisterEventSource( NULL, L"IISADMIN" );
Эта строка будет выполнена, будет вызван RegisterEventSource()
, и ее возвращаемое значение будет присвоено m_hEventLog
.
EDIT
Рассмотрим следующую программу:
class A
{
public:
A() : a(0) {}
int get_a() const {return a;}
void set_a(int na) {a = na;}
private:
int a;
};
int main()
{
return 0;
}
Когда эта программа выполняется, на самом деле ничего не происходит для class A
, поскольку никакой переменной не объявлено , определенной для типа A . Если функция main()
написана следующим образом:
int main()
{
A a;
return 0;
}
тогда объект типа A
объявлен определен (при условии, что компилятор ничего не оптимизировал). Внутри него содержится целое число (переменная-член a
). Конструктор A
будет вызываться для инициализации A
. И конструктор инициализирует A
a
в 0. Примечание. Я использовал список инициализатора для инициализации A::a
.