gpt4 book ai didi

c++ - 从第二个父亲访问 'this'指针作为第一个父亲的指针是否安全?

转载 作者:行者123 更新时间:2023-12-02 10:04:38 24 4
gpt4 key购买 nike

我必须承认,很难表达这个问题。所以我有个例子:


class P1
{
public:
P1(int num) : m_Num(num)
{
}

int m_Num = 0;
};

class P2
{
public:
P2(P1* ptr) { std::cout << ptr->m_Num << std::endl; }
};

class S : public P1, public P2
{
public:
S(): P1(567), P2(this)
{
}
};

int main()
{
S abc;
}

实际上,您将获得如下输出:

567



但是我不确定根据标准在 ptr中使用 P2是否安全。

最佳答案

是的,至少在这种情况下,它是安全的。需要注意的关键是,该标准允许在期望基类指针的地方提供派生类指针。在您的代码中P2是基数,而S是派生的,在期望P2的指针到达的地方传递S的指针是绝对合法的。

这与多态有关,并且受所有OOP语言支持。

关于c++ - 从第二个父亲访问 'this'指针作为第一个父亲的指针是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60898586/

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