设为首页 加入收藏

TOP

4.2.5 编程题(2)
2013-10-07 16:21:36 来源: 作者: 【 】 浏览:75
Tags:4.2.5 编程

4.2.5  编程(www.cppentry.com)题(2)

解:类Y的成员函数g是类X的友元函数,参见4.1.1节中有关定义方法。另外,类Z是类X的友元类,参见4.1.2节中有关定义方法。X、Y、Z 3个类定义如下:
 

  1. #include <iostream.h> 
  2. class X;                                    //预先说明  
  3. class Y  
  4. {  
  5. public:  
  6.     void g(X *);  
  7. };  
  8. class X  
  9. {   int i;  
  10. public:  
  11.     X() { i=0; }  
  12.     friend void h(X *x) { x->i+=10; }  
  13.     friend void Y::g(X *);  
  14.     friend class Z;  
  15. };  
  16. class Z  
  17. {  
  18. public:  
  19.     void f(X *x) { x->i+=5; }  
  20. };  
  21. void Y::g(X *x) { x->i++; }         //友元函数的实现  

【例4.16】设计一个程序,其中有3个类,即CBank、BBank和GBank,分别为中国银行类、工商银行类和农业银行类。每个类都包含一个私有数据balance,用于存放储户在该行的存款数,另有一个友元函数total用于计算储户在这3家银行中的总存款数。类结构如图4.1所示。

解:CBank、BBank和GBank 3个类中均包含私有数据balance,以及其输入输出的相关函数和友元函数total()的说明,在最后定义该友元函数。程序如下:
 

  1. #include <iostream.h> 
  2. class BBank;                                //预先说明,因为CBank中使用到BBank  
  3. class GBank;                                //预先说明  
  4. class CBank                                 //定义中国银行类CBank  
  5. {   int balance;  
  6. public:  
  7.     CBank()    { balance=0;}                //默认构造函数  
  8.     CBank(int b) { bbalance=b; }         //构造函数  
  9.     void getbalance()  
  10.     {   cout << "输入中国银行存款数:";  
  11.         cin >> balance;  
  12.     }  
  13.     void disp()    {cout << "中国银行存款数:" << balance << endl;}  
  14.     friend void total(CBank,BBank,GBank);  
  15. };  
  16. class BBank                                 //定义工商银行类BBank  
  17. {   int balance;  
  18. public:  
  19.     BBank()    { balance=0; }               //默认构造函数  
  20.     BBank(int b) { bbalance=b; }         //构造函数  
  21.     void getbalance()  
  22.     {   cout << "输入工商银行存款数:";  
  23.         cin >> balance;  
  24.     }  
  25.     void disp()  
  26.     {cout << "工商银行存款数:" << balance << endl;}  
  27.     friend void total(CBank,BBank,GBank);  
  28. };  
  29. class GBank                                 //定义农业银行类GBank  
  30. {   int balance;  
  31. public:  
  32.     GBank() { balance=0; }                  //默认构造函数  
  33.     GBank(int b) { bbalance=b;}          //构造函数  
  34.     void getbalance()  
  35.     {   cout << "输入农业银行存款数:";  
  36.         cin >> balance;  
  37.     }  
  38.     void disp()    { cout << "农业银行存款数:" << balance << endl; }  
  39.     friend void total(CBank,BBank,GBank);  
  40. };  
  41. void total(CBank A,BBank B,GBank C)  
  42. {   cout << "  总存款数:" <<  A.balance+B.balance+C.balance  << endl;  }  
  43. void main()  
  44. {   CBank X(100);  
  45.     BBank Y;  
  46.     GBank Z;  
  47.     X.disp();  
  48.     Y.disp();  
  49.     Z.disp();  
  50.     Y.getbalance();  
  51.     Z.getbalance();  
  52.     total(X,Y,Z);  
  53. }  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇4.2.5 编程题(1) 下一篇4.2.5 编程题(3)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·用 Python 进行数据 (2025-12-25 15:49:09)
·如何学习Python数据 (2025-12-25 15:49:07)
·利用Python进行数据 (2025-12-25 15:49:04)
·Java 学习线路图是怎 (2025-12-25 15:19:15)
·关于 Java 学习,有 (2025-12-25 15:19:12)