gpt4 book ai didi

c++ - 避免调用成员变量的构造函数

转载 作者:可可西里 更新时间:2023-11-01 15:09:20 25 4
gpt4 key购买 nike

我有以下 C++ 类:

// Header-File
class A
{
public:
A();

private:
B m_B;
C m_C;
};

// cpp-File
A::A()
: m_B(1)
{
m_B.doSomething();
m_B.doMore();
m_C = C(m_B.getSomeValue());
}

我现在想避免 A 类 调用C m_C任何 构造函数。因为在 A::A() 的最后一行,我无论如何都要自己初始化 m_C 因为我需要先准备 m_B .我可以为 class B 提供一个空的默认构造函数。但这不是我们的想法。

我已经尝试将 m_C(NULL) 添加到 A::A() 的初始化列表中。有时它有效,有时它说没有构造函数将 NULL 作为参数。

那么我怎样才能让 m_C 保持未初始化状态呢?我知道使用指针,m_C(NULL) 方式可以工作。而且我不想使用 new 动态分配它。

任何想法都会受到赞赏。

最佳答案

如何使用此 QA 中描述的技术?

Prevent calls to default constructor for an array inside class

std::aligned_storage<sizeof(T[n]), alignof(T)>::type

或者,你也可以考虑使用union。据我所知,unions will be initialized only with first named member's constructor.

例如,

union
{
uint8_t _nothing = 0;
C c;
};

根据QA中提到的标准,c将被零初始化,并且不会调用其构造函数。

关于c++ - 避免调用成员变量的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7833904/

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