与公共,私人和受保护的区别
Difference with Public, private and protected
我正在解决一些基本的继承问题。我遇到了一些我不明白逻辑_that的事情。 如果我从基类继承派生类作为私有,我甚至可以访问基类的公共成员吗?这是我的代码,
#include <iostream>
struct Shape
{
virtual void print()
{
std::cout << "SHAPE" << std::endl;
}
virtual ~Shape() {}
};
struct Box : private Shape
{
virtual void print()
{
std::cout << "BOX" << std::endl;
}
};
int main(int argc, char** argv)
{
Shape* s = new Box; //illformed ? can't access the public members of the base.
s->print();
delete s;
return 0;
}
不,您不应该能够访问作为私有继承的基类的公共成员,否则私有继承的目的将毫无意义。您甚至不应该能够将Box*
类型的指针分配给Shape*
类型的变量。如果你的编译器处理代码并且二进制文件打印"SHAPE"而不是"BOX",你的编译器确实坏了。
相关文章:
- C++:无法访问声明的受保护成员
- 继承和友元函数,从基类访问受保护的成员
- 为什么派生类的好友不能使用受保护的成员?
- C++:为什么无法在派生类中访问受保护的构造函数?
- 公共/私有/受保护是否会更改内存中结构的排列?
- 在父类中公开受保护的构造函数
- 如何从其他结构访问受保护的结构变量
- 如何实现返回受保护结构的私有函数
- 相同的层次结构,访问基类的受保护成员时的行为不同
- 从模板化父类中的派生内部类访问受保护的成员变量
- 为什么继承的受保护构造函数不能公开?
- 在使用受保护和继承时无法访问在类中声明的私有成员
- C++中的受保护变量
- 在此上下文中受保护 c++
- 同一模板类但模板类型的受保护成员
- 与公共,私人和受保护的区别
- 受保护和私有有什么区别
- 私有和受保护的纯虚拟函数之间有什么区别吗
- 公共成员和公共继承的受保护成员有什么区别?
- C++ 中的受保护派生和私有派生有什么区别