[c++]友元函数

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

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值