不要编写太复杂的复合表达式。
例如: i = a >= b && c < d && c + f <= g + h ; // 复合表达式过于复杂
1 #include <iostream> 2 3 /* run this program using the console pauser or add your own getch, system("pause") or input loop */ 4 using namespace std; 5 //Y类的不完全定义 6 class Y; 7 8 //X类的定义 9 class X { 10 public: 11 void disp(Y py,char *name); //成员函数原型 12 }; 13 14 //定义Y类 15 class Y { 16 //声明本类的友元函数 17 //X类的disp()为本例的友元函数 18 friend void X::disp(Y py,char *name); 19 //普通函数putY() 为本例的友元函数 20 friend void putY(Y& yc,char *name); 21 private: //私有成员 22 int num; 23 dispY(char *name){ 24 cout<<name<<".num="<<num<<endl; 25 } 26 public: //公共成员函数 27 Y(int n){ 28 num=n; 29 } 30 }; 31 32 //X类成员函数的实现部分 33 void X::disp(Y py,char *name){ 34 cout<<"In X::disp():"<<endl; 35 py.dispY(name); //访问Y类的私有函数 36 } 37 38 //普通函数putY()的定义 39 void putY(Y& yc,char *name){ 40 cout<<"In getY:"<<endl; 41 yc.dispY(name); 42 cout<<name<<".num="; 43 cout<<yc.num<<endl; 44 } 45 46 //在main()函数测试X和Y类的功能 47 48 int main(int argc, char** argv) { 49 //创建Y和X类的对象 50 Y y1(100),y2(200); 51 X x; 52 53 //不可用Y类对象的私有成员函数显示 54 //y1.dispY("y1"); 55 //y2.dispY("y2"); 56 57 //调用X类对象的友元函数显示 58 x.disp(y1,"y1"); 59 x.disp(y2,"y2"); 60 61 //用getY函数显示Y类的对象显示 62 putY(y1,"y1"); 63 putY(y2,"y2"); 64 return 0; 65 }