gpt4 book ai didi

static - C++/CLI,类声明外的静态构造函数

转载 作者:行者123 更新时间:2023-12-03 14:08:22 25 4
gpt4 key购买 nike

如何将托管类的静态构造函数的主体放在类声明之外?这种语法似乎是可编译的,但它真的意味着静态构造函数,还是只是一个静态(=在翻译单元外部不可见)函数?

ref class Foo {
static Foo();
}

static Foo::Foo() {}

最佳答案

是的,这是创建 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");
}

这将输出:

Static Constructor
Constructor
Main

关于static - C++/CLI,类声明外的静态构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3188164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com