首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C++/CLI,类声明外部的静态构造函数

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

Stack Overflow用户
提问于 2010-07-07 00:24:44
回答 1查看 7.4K关注 0票数 18

如何将托管类的静态构造函数体放在类声明之外?这个语法看起来是可编译的,但它是否真的意味着静态构造函数,或者仅仅是一个静态(=在翻译单元之外不可见)函数?

代码语言:javascript
复制
ref class Foo {
    static Foo();
}

static Foo::Foo() {}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-07 02:11:46

是的,这是创建C++/CLI静态构造函数的正确语法。你可以知道它不会创建一个静态函数,因为这不是一个有效的函数声明语法。函数必须具有指定的返回类型。此外,如果编译器没有将Foo()链接到您在类定义中声明的构造函数,则编译器会抱怨它不是类Foo的成员。

您可以相当容易地测试:

代码语言:javascript
复制
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");
}

这将输出:

静态构造函数

构造函数

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3188164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档