如何将托管类的静态构造函数体放在类声明之外?这个语法看起来是可编译的,但它是否真的意味着静态构造函数,或者仅仅是一个静态(=在翻译单元之外不可见)函数?
ref class Foo {
static Foo();
}
static Foo::Foo() {}
发布于 2010-07-07 02:11:46
是的,这是创建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");
}
这将输出:
静态构造函数
构造函数
主
https://stackoverflow.com/questions/3188164
复制相似问题