1 #include <iostream> 2 #include <string> 3 4 using namespace std; 5 6 7 class Screen 8 { 9 public: 10 //类的友元函数,可以使用类中的私有成员变量 11 friend int calcArea(Screen &screen); 12 //友元类 ,也可以将类其中的一个函数设为友元 13 friend class Window_Mgr; 14 15 typedef string::size_type index; 16 //构造函数并进行初始化 17 Screen(int ht=0,int wd=0):contents(ht*wd,' '),cursor(0),height(ht),width(wd){} 18 int area()const 19 { 20 return height*width; 21 } 22 23 private: 24 string contents; 25 index cursor; 26 int height,width; 27 }; 28 29 //窗口管理类 30 class Window_Mgr 31 { 32 public: 33 void relocate(int r,int c,Screen &s) 34 { 35 s.height +=r; 36 s.width +=c; 37 } 38 }; 39 40 int calcArea(Screen &screen) 41 { 42 return screen.height*screen.width; 43 } 44 45 int main() 46 { 47 48 Screen a(60,100); 49 Window_Mgr w; 50 cout<<a.area()<<endl; 51 w.relocate(20,60,a); 52 cout<<calcArea(a)<<endl; 53 return 0; 54 }