其中有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指針