深入理解C++中的友元、异常和RTTI
1. 友元
1.1 友元类
在C++中,友元类(Friend Classes)允许一个类的成员函数访问另一个类的私有和保护成员。这种机制打破了封装性,但提供了更大的灵活性。例如,当你需要两个类之间有紧密的合作关系时,友元类非常有用。考虑一个简单的电视和遥控器的例子:
class Tv {
friend class Remote;
public:
void buzz(Remote& r);
// 其他成员函数和变量
};
class Remote {
friend class Tv;
public:
void volup(Tv& t) { t.volup(); }
// 其他成员函数和变量
};
在这个例子中, Remote
类可以访问 Tv
类的私有成员,反之亦然。这使得两者之间的交互更加方便。
1.2 友元成员函数
友元成员函数(Friend Member Functions)是另一个类的成员函数,但它可以访问当前类的私有和保护成员。例如:
class A {
friend void B::func(A& a);
};
class B {
public:
void func(A& a) {
// 可以访问A的私有成员
}
};
<