父访问子项
Parent accessing child
本文关键字:访问 更新时间:2023-10-16
我理解这里所说的一切,它描述了孩子如何访问父成员。但是,父母访问孩子怎么样?我只是无法理解这一点。为什么错了?您能否解释一下编译时的静态绑定规则?我想学生班本身在这里受到保护,但为什么呢?
using namespace std;
class Person
{
public:
int b;
};
class Student : protected Person
{
public:
int c;
};
int main()
{
Student s;
Person *pPerson;
pPerson = &s;
return 0;
}
C-T 错误:
错误是:类型转换:存在从"学生*"到"人员*"的转换,但无法访问
它不是关于Person
如何"看到"Student
,而是关于继承的访问控制意味着什么。
当你说class Student: public Person
时,这意味着你宣布一个Student
对每个人都是一个Person
,这意味着main()
知道一个Student*
可以被一个Person*
引用。所以一切都很好。
当你说class Student: private Person
时,这意味着Student
继承了Person
的功能,但这只是一个实现细节。这不会让任何人知道Student
是Person
,因此不能将其视为。因此,main()
认为Student*
和Person*
是无关的。
当你说class Student: protected Person
时,这有点棘手,但这个过程仍然适用。您正在从Person
继承功能,任何派生的Student
类也知道这一点。所以如果你有一个像Freshman
这样的类继承自Student
,它就会知道它也是一个Person
。但是,这是特定于继承类的,main()
不知道Student
是Person
,因为该知识受到保护。
相关文章:
- 通过方法访问结构
- 使用不带参数的函数访问结构元素
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- 用于访问容器<T>数据成员的正确 API
- 访问者访问变体并返回不同类型时出错
- 尝试通过多个向量访问变量时,向量下标超出范围
- 无法访问嵌套类.类的使用无效
- 写入位置0x0000000C时发生访问冲突
- 我们可以访问一个不存在的联盟的成员吗
- C++从另一个类访问公共静态向量的正确方法是什么
- 我的简单if-else语句是如何无法访问的代码
- 从C++dll访问C#中的一行主要参数
- 概念TS检查忽略私有访问修饰符
- 访问被拒绝后,c++中的故障保护代码
- 在c++中访问int到类对象的映射时出错
- 我想访问std::unique_ptr中的一个特定元素
- 为什么示例代码访问IUnknown中已删除的内存
- C++:无法访问声明的受保护成员
- 通过指向指针数组的指针访问子类的属性
- 如何使用单独文件中的派生类访问友元函数对象