我把一个班级放到另一个班级。我将最高级别的类的引用放入较低级别的类(不确定是否有这个的命名法......不是孩子/父母......?子类?)。我很惊讶地看到我可以从那个子类中调用私有函数。为什么这可能?
简单示例:我很惊讶 Bar 可以从 Foo 调用私有函数
// Example program
#include <iostream>
#include <string>
class Foo {
public:
class Bar {
public:
Bar(Foo &foo);
void DoFoo();
private:
Foo &foo;
};
Foo();
private:
void Do();
};
Foo::Foo(){}
void Foo::Do(){
std::cout << "im doing foo";
}
Foo::Bar::Bar(Foo &foo)
:foo(foo)
{
};
void Foo::Bar::DoFoo(){
this->foo.Do();
}
int main()
{
Foo foo;
Foo::Bar bar(foo);
bar.DoFoo();
}