其中有2个类:一个是深圳类shen_stock,一个是上海类shang_stock,类中有3个私有成员:普通股票个数general,ST股票个数st和PT股票个数pt,每个类分别有自己的友元函数来计算并显示深圳或上海的股票总数(3项的和)。两个类还公用一个函数count(),用来计算深圳和上海总共有多少股票并输出
#include<iostream> using namespace std; class shen_stock { class shang_stock; private: int general; int st; int pt; public: shen_stock(int g,int s,int p) { general = g; st = s; pt = p; } int get_g() {return general;} int get_s() {return st;} int get_p() {return pt;} friend void add_shen(shen_stock & s); friend void count(shen_stock & s,shang_stock &ss); }; class shang_stock { class shen_stock; private: int general; int st; int pt; public: shang_stock(int g,int s, int p) { general = g; st = s; pt = p; } int get_g() {return general;} int get_s() {return st;} int get_p() {return pt;} friend void add_shang(shang_stock &s); friend void count(shen_stock & s,shang_stock &ss); }; // void add_shen(shen_stock & s) { cout<<"shen_stock is "<<s.get_g() + s.get_p() + s.get_s()<<endl; } // void add_shang(shang_stock &s) { cout<<"shang_stock is "<<s.general + s.st + s.pt<<endl; } // void count(shen_stock &s,shang_stock &ss) { //s.general +s.pt + s.st + ss.general + ss.pt + ss.st;私有成员要通过共有成员访问 cout<<"shang_stock and shen_stock is "<<s.get_g()+s.get_p()+s.get_s()+ss.get_g()+ss.get_p()+ss.get_s()<<endl; } //// int main() { void count(shen_stock &s,shang_stock &ss); shang_stock s1(1600,20,10); shen_stock s2(1500,15,8); add_shang(s1); add_shen(s2); count(s2,s1);//注意别写反了 return 0; }
注意:
1 定义在哪个类的内部,就可用该类内的私有成员(类内)
2 格式为函数名前加friend关键字
3 不需要作用域表示符,无this指针
原文地址:http://blog.csdn.net/cherry_ermao/article/details/45031605