gpt4 book ai didi

c++ - 以下操作安全吗?

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

考虑这段代码:

struct A {};

struct B
{
B(A* a) : a(a) {}
private:
A* a;
};

struct base
{
base(B b) : b(b) {}
protected:
A a;
private:
B b;
};

struct derived : public base
{
derived() : base(B(&a)) // <-- IS THIS OK?
{}
};

这里,基类需要一个B对象由派生类传递给它的构造函数,B对象引用一个A对象,但是A对象存在于基类内部。

B 对象的构造函数除了存储 A 指针外,没有对 A 指针做任何事情,所以我认为这应该没问题,但它仍然感觉不对,因为从技术上讲,A 对象在我当时还不存在'将它传递给基础构造函数。

我这样做会遇到麻烦还是应该没问题?

最佳答案

只要你不在 B 的构造函数中使用 a 就是安全的,因为对象 a 尚未构建。

我的意思是,您不应该在B 的构造函数中取消引用指针a;然而,在 base 的构造函数执行后,您可以在 B 的其他方法中安全地取消引用 B::a

关于c++ - 以下操作安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8686765/

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