gpt4 book ai didi

c++ - 对象初始化期间的析构函数调用?

转载 作者:太空宇宙 更新时间:2023-11-04 15:25:46 27 4
gpt4 key购买 nike

鉴于下面的代码,为什么我会收到关于 A 的析构函数是私有(private)的错误?明明是私有(private)的,但是我不明白为什么这样初始化B的A对象实例会导致A的析构函数被调用。

对于任何拼写错误,我深表歉意,我正在从非联网系统的内存中重新创建代码,并且没有编译器。

class A
{
public:
A(int val) : x(val) {}

private:
int x;
~A() {}
};

class B
{
public:
B() : aInstance() {}

private:
A aInstance;
};

int main()
{
B b;
}

最佳答案

初始化本身不涉及使用dtor,但B 的实例在main 结束时被销毁。 B 包含一个 A,所以当 B 被销毁时,A 也必须被销毁——但是 A 的 dtor 不可用,因此无法生成执行此操作的代码。

关于c++ - 对象初始化期间的析构函数调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8824339/

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