usar - static c++>
C++/CLI, constructor estático fuera de la declaración de clase (1)
¿Cómo coloco el cuerpo del constructor estático de una clase administrada fuera de la declaración de clase? Esta sintaxis parece ser compilable, pero ¿realmente significa constructor estático, o simplemente una función estática (= no visible fuera de la unidad de traducción)?
ref class Foo {
static Foo();
}
static Foo::Foo() {}
Sí, esa es la sintaxis correcta para crear un constructor estático C ++ / CLI. Puede saber que no está creando una función estática ya que no es una sintaxis de declaración de función válida. Las funciones deben tener el tipo de retorno especificado. Además, el compilador se quejaría de que Foo()
no es miembro de la clase Foo si no lo vinculara al constructor que declaraste en la definición de la clase.
Puedes probar el bastante fácilmente:
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");
}
Esto daría como resultado:
Constructor estático
Constructor
Principal