gpt4 book ai didi

c++ - 指向成员对象的成员指针和声明顺序

转载 作者:行者123 更新时间:2023-11-30 04:20:08 25 4
gpt4 key购买 nike

#include <iostream>

class FooParent
{
public:
FooParent(int* new_p_bar)
{
p_bar = new_p_bar;
}
public:
int* p_bar;
};

class FooChild : public FooParent
{
public:
int bar;
public:
FooChild(int new_x)
:FooParent(&bar)
,bar(new_x) \\ point of concern
{}
};

int main()
{
FooChild foo(8);
std::cout << foo.bar << std::endl;

}

上面的例子按照我想要的方式工作。将指针 p_bar 链接到 bar。但是,我担心的是我指向的成员的构造函数尚未被调用。

这段代码是否有效,或者标准是否有关于它的内容。如果不是,还有什么选择。

注意:在我的应用程序中,bar 是一个对象Bar(不是int),这个有没有影响?

最佳答案

如果您将指针传递给成员,则没有未定义的行为,直到您尝试取消引用它。如果您想调用构造函数,请查看 base-from-member 成语 http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Base-from-Member

关于c++ - 指向成员对象的成员指针和声明顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15384746/

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