gpt4 book ai didi

c++ - 转换为基类有效性

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:17:36 25 4
gpt4 key购买 nike

假设我有一个名为 Base 的类和一个从它派生的名为 SuperBase 的类。假设 add 接受了一个 Base*,那么这些是否有效:

SuperBase *super = new SuperBase;
bases.add(super);

或者

SuperBase *super = new SuperBase;
bases.add((Base*)super);

最佳答案

只要 SuperBase 通过从派生到基的隐式转换公开派生自 Base,第一个就可以工作:

struct base { virtual ~base() {} };
struct derived : base {};

base* b = new derived; // okay

第二个也可以,但忽略了 Base 的保护:

struct derived : private base {}; // private base

base* b = new derived; // not okay, base is private
base* b = (base*)(new derived); // okay, but gross

如果它是private,您可能不应该强制转换它。

关于c++ - 转换为基类有效性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3876835/

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