我知道这friend
不是继承的。我有课Parent Person Child
。Parent 和 Person 是彼此的朋友。父母具有以下保护功能...
class Person
{
friend class Parent;
public:
Parent * parent;
}
class Parent
{
friend class Person;
protected:
virtual void Answer() = 0;
}
class Child : public Parent
{
void Answer()
{
std::cout << "Child!" << endl;
}
}
我的问题是,如果没有继承友谊,我怎么能拥有以下......?(人有一个指向父母的指针)
Person person;
Child child;
person.parent->Answer();
为什么是这个 Child! 的输出,并且在尝试访问虚函数时不会抛出运行时错误?
我对如何实现孩子的功能感到困惑,并且程序在运行时没有出错,因为我预计它正在尝试调用父母的虚拟应答功能。