lio*_*ori 17 static constructor c++-cli
如何在类声明之外放置托管类的静态构造函数体?这种语法似乎是可编译的,但它真的意味着静态构造函数,还是只是一个静态(=不可见的外部翻译单元)函数?
ref class Foo {
static Foo();
}
static Foo::Foo() {}
Run Code Online (Sandbox Code Playgroud)
hea*_*vyd 18
是的,这是创建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");
}
Run Code Online (Sandbox Code Playgroud)
这将输出:
静态构造函数
构造
主
| 归档时间: |
|
| 查看次数: |
6760 次 |
| 最近记录: |