gpt4 book ai didi

c++ - 继承的典型问题

转载 作者:行者123 更新时间:2023-11-28 03:55:52 26 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Why is this not allowed in C++?

为什么这在 C++ 中是不允许的...?

class base
{
private:

public:
void func()
{
cout<<"base";
}


};

class derived : private base
{
private:


public:
void func()
{
cout<<"derived";
}


};

int main()
{
base * ptr;
ptr = new derived;
((derived *)ptr)->func();
return 0;
}

我遇到了一个错误

**61 C:\Dev-Cpp\My Projects\pointertest.cpp `base' is an inaccessible base of `derived'** 

我的问题是,因为 func() 在派生类中被定义为 public 并且声明((派生 *)ptr)->func();正在尝试显示 derived 的 func() ..为什么由于继承模式存在可访问问题..继承模式(私有(private))如何影响调用,尽管我已经有 public derived func () 在派生类中..?

如果将继承模式更改为公开,我会得到我想要的结果..但是 func() 在 base 中是私有(private)的(因此 base 的 func() 不被继承)并且 func() 在派生中也是公开的并且继承模式是public 为什么我仍然得到我想要的结果..我应该像以前的情况一样得到一个编译错误吗??

我完全糊涂了..请告诉我编译器在这种情况下是如何工作的..??

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