首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类声明中静态对象的c++初始化

类声明中静态对象的c++初始化
EN

Stack Overflow用户
提问于 2012-05-08 21:27:40
回答 1查看 29.6K关注 0票数 9

我有一个C++类(class1),另一个类(class2)的静态对象作为私有成员。

我知道在使用程序时,我必须初始化静态对象,我可以为这个(不需要的值)使用默认的构造函数。

只有在创建包含类(class1)的对象时,才能将静态对象初始化为我想要的值一次吗?

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-08 21:29:17

是。

代码语言:javascript
复制
// interface

class A {

    static B b;
};

// implementation

B A::b(arguments, to, constructor); // or B A::b = something;

但是,即使您不创建A类的实例,它也会被初始化。除非您使用指针并在构造函数中初始化它一次,否则您无法使用任何其他方法,但这可能是一个糟糕的设计。

但是,如果你真的想要,下面是怎么做的:

代码语言:javascript
复制
// interface

class A {
    A() { 
        if (!Bptr)
            Bptr = new B(arguments, to, constructor);

        // ... normal code
    }

    B* Bptr;
};

// implementation

B* A::Bptr = nullptr;

然而,正如我所说的,这很可能是一个糟糕的设计,而且它存在多线程问题。

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

https://stackoverflow.com/questions/10499582

复制
相关文章

相似问题

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