gpt4 book ai didi

c++ - 为什么 Base *pd = new Derived;产生错误?

转载 作者:太空宇宙 更新时间:2023-11-03 10:21:13 25 4
gpt4 key购买 nike

给定这段代码:

class Base{ 
public:
Base();
virtual ~Base();
};

class Derived: protected Base{
public:
virtual ~Derived();
};

在 main 中,我试图以这种方式将 derived 分配给 base:

Base *pd = new Derived;

为什么这个语句会产生错误?

这里 new 将返回一个对象类型的指针,我们总是可以将派生指针分配给一个基类。如果我错了,请纠正我。

最佳答案

要将指向一个类的指针转换为指向不同类类型的指针,转换必须在调用时可访问。

由于 BaseDerived 的 protected 基类,因此您不能从表达式 new 中初始化类型为 Base * 的变量Derived(类型为 Derived *)在 Derived 的成员函数之外,从它派生的类或 friend 派生

关于c++ - 为什么 Base *pd = new Derived;产生错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4480761/

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