Ответ 1
Да, это правильный синтаксис для создания статического конструктора С++/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");
}
Это приведет к выводу:
Статический конструктор
Конструктор
Главная