gpt4 book ai didi

c++ - 在其构造函数的成员初始化列表中使用对对象的引用

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:20:20 25 4
gpt4 key购买 nike

是否可以在其构造函数的成员初始化列表中传递对对象(类型)Container 的引用,以便初始化 Container 的成员,如下所示:(代码在 ideone 上)。

#include <cstdlib>
#include <iostream>

struct Container;

struct Member
{
Member( Container& container ) : m_container( container )
{
}

Container& m_container;
};

struct Container
{
Container() : m_member( *this )
{
}

Member m_member;
};

int main()
{
Container c;
return EXIT_SUCCESS;
}

代码可以编译,但我不确定它是否符合标准。

最佳答案

没关系;成员引用被初始化为引用作为参数传递的对象。

但是,由于 Container 仍在构建中,您不能在该构造函数中访问它;您唯一可以对引用执行的操作是初始化另一个引用。

您还必须确保在销毁容器后不使用该引用。在此示例中,没问题 - m_member 及其包含的引用随容器一起销毁。

关于c++ - 在其构造函数的成员初始化列表中使用对对象的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10110565/

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