c++ - 为什么在保护模式下继承向上转换不起作用
问题描述
当我在保护模式下继承类时为什么Derived* to Base*
会失败
class Base { };
class Derived : protected Base { };
int main()
{
Base* b = new Derived(); // compile error
}
解决方案
对基类的访问与对任何成员的访问相同。从外部来看,访问是完全被禁止的。只有特权代码(可以访问其他受保护甚至私有部分的代码)才能以这种方式访问基类。
推荐阅读
- laravel - 为音频文件 Lumen 8 检测到不正确的 mimeType
- .net - Framework/Framework64 目录 VS GAC
- data-structures - 按数据位排列的二叉树,而不是通过比较?
- javascript - VScode:使用 javascript 包启用智能感知时遇到问题
- keras - 如何在 Keras 中微调 InceptionV3
- c++ - C++ 引用重新分配
- algorithm - 使用广度优先搜索找到迷宫中的最短路径
- mysql - 如何解决 MySQL 错误“ERROR 1396 (HY000): Operation ALTER USER failed for 'myuser'@'localhost'?”
- amazon-web-services - 如何删除太多状态为 DELETE_COMPLETE 的 Cloudformation 堆栈
- github - Github 将“https://github.com/user/repo/blob/main/”添加到 readme.md 中的所有链接