标签:thinkinginc++ friend 类
/** * 功能:友元 * 时间:2014年8月20日16:13:42 * 作者:cutter_point */ /* *编译器知道如何传递一个地址,这一个地址具有固定的大小,而不管被传递的是什么对象 *然而试图传递整个对象的话,那么编译器就必须知道X的全部定义以确定他的大小以及如何 *传递,所以程序就无法声明一个类似于Y::g(X)的函数,所以下面的f(X*)函数必须是指针 */ struct X; struct Y { void f(X*); }; struct X //定义X类 { private: int i; public: void initialize(); //注意一个友元的申明必须在类的里面 friend void g(X*, int); //全局友元 friend void Y::f(X*); //结构体成员函数 friend struct Z; //友元类 friend void h(); }; void X::initialize() { i=0; } void g(X* x, int i) { x->i=i; } void Y::f(X* x) { x->i=47; } struct Z { private: int j; public: void initialize(); void g(X* x); }; void Z::initialize() { j=99; } void Z::g(X* x) { x->i+=j; } void h() { X x; x.i=100; } int main() { X x; Z z; z.g(&x); return 0; }
【ThinkingInC++】30、友元,布布扣,bubuko.com
标签:thinkinginc++ friend 类
原文地址:http://blog.csdn.net/cutter_point/article/details/38707797