gpt4 book ai didi

c++ - 私有(private)继承中的对象切片

转载 作者:行者123 更新时间:2023-11-30 02:52:17 26 4
gpt4 key购买 nike

为什么对象切片不发生在私有(private)继承中? Static_cast 在这种情况下会出错吗?我知道私有(private)继承在其继承类之间不存在“is-a”关系。这是否与切片有关,因为派生不是基类型,所以编译器强制不进行隐式转换?

最佳答案

将派生类分割成它的私有(private)基类没有任何意义。想一想“私有(private)”的含义。这意味着外界不应该关心它。允许切片(类型转换)到私有(private)基地意味着外界会关心。

如果你真的想要这种行为(我很想听听你的理由),你可以绕过它:

class Base { };
struct Derived : private Base
{
Base asBase() { return static_cast<Base>(*this); }
};

这样,转换发生在 Derived 内部,其中 Base 是可访问的。您从 static_cast 得到的错误是因为它在 Derived 范围之外使用,其中 Base 不可访问。

关于c++ - 私有(private)继承中的对象切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19075517/

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