问题标签 [private-inheritance]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
45 浏览

c++ - 我可以将私有基础的所有成员拉入继承类的公共范围吗?

当从基类私有继承时,我可以说public: using Base::member;使该(非私有)成员在继承类中公开。有什么方法可以扩展它以一次获得所有成员?我想要的上下文是我用来避免代码重复的 CTRP 设置。

例子:

如果我只能选择 Base 的公共成员,而不是它的受保护或私有成员,那就更好了。这只是一个奖金。

0 投票
2 回答
92 浏览

c++ - 为什么 C++ 允许私有父级的这种指针多态性?

如果我从基类私下继承派生类,我无法获得继承类的多态性。

但是我可以在派生类中获得“this”指针的多态性。

我很好奇为什么允许'this'指针多态到它的私有父级,但是,类外的指针却不允许。

提前致谢!

=========

编辑以澄清。感谢所有的答案。为了澄清我的问题,我认为如果 C++ 允许这种行为,我可能会稍微违反封装

一个更清晰的案例:

Base 类的对象只作为父对象部分存在于 Derived 类的对象中,而 Derived 类的继承者是私有的 Base 类,也就是说 Derived 类对象有一个基类的对象,私有的。

上面的代码违反了Derived 类的封装规则,但是在编译过程中甚至没有给出警告。

我认为在这种情况下应该使用显式强制转换,或者在编译时给出警告。