Да, это правильный синтаксис для создания статического конструктора C ++ / CLI.Вы можете знать, что она не создает статическую функцию, поскольку это недопустимый синтаксис объявления функции.У функций должен быть указан тип возвращаемого значения.Кроме того, компилятор будет жаловаться, что Foo()
не является членом класса Foo, если он не связывал его с конструктором, который вы объявили в определении класса.
Вы можете довольно легко протестировать:
using namespace System;
ref class Foo {
static Foo();
Foo();
}
static Foo::Foo() { Console.WriteLine("Static Constructor"); }
Foo::Foo() { Console.WriteLine("Constructor"); }
int main(array<System::String ^> ^args)
{
Foo ^f = gcnew Foo();
Console.WriteLine("Main");
}
Это выдает:
Статический конструктор
Конструктор
Main