【Come on】C++访问权限的问题
C++要求在使用一个类型时必须见到它的声明,但在定义变量时必须看见整个类型的定义对吧?那么
struct X;
void f(X x){} //是不被允许的
//但是
struct Y{
void f1(X x);//不报错
};//是不是只要在使用(定义)X的时候,编译器已经看见X的定义就行
//而在声明的时候是不要紧的?
还有 struct中
struct A{
private:
int i;
public:
struct B;
friend struct B;//书上说必须这样写(声明B为友元),B本身不会自动被允许访问 A的private成员
//可是我把上两行去掉了同样不报错,还有,书上说 声明了struct B;就可以用 friend B;声明友元但
//我测试失败,不写上 struct 就会报错
struct B{
A* x;
void f(){x->i=10;}//这里引用了A的私有成员
};
};
//注:我所说的书是《Thinking in C++ volume1》