友元函数和友元类

友元函数是在类外面定义一个全局函数,并在类内声明成友元函数,这样在这个函数里面就可以修改类内的私有属性。
   
   
#include "iostream"
using namespace std;
 
class A
{
public :
//1、声明位置和public和private的位置无关
friend void modifyA(A *pa, int _a);//此处声明 modifyA是类A的友元函数
//friend void modifyA(A &pa, int _a);此处不声明成指针,声明成引用也行
A(int a, int b)
{
this->a = a;
this->b = b;
}
int Geta()
{
return this->a;
}
private:
int a;
int b;
};
 
void modifyA(A* pa,int _a)
// void modifyA(A &pa, int _a );
{
pa->a = _a;//若 modifyA 不是类A的友元函数,这儿是不能调用私有属性a的
//pa.a = _a;
}
void main()
{
A a1(1,2);
cout << a1.Geta() << endl;
modifyA(&a1, 300);
// modifyA(a1, 300);
cout << a1.Geta() << endl;
system("pause");
}
友元类:若C类是B类的友元类,则B类的所有成员函数都是B类的友元函数
友元类通常设计为一种对数据操作或类之间传递消息的辅助类
   
   
#include"iostream"
using namespace std;
class B
{
friend class C;//C是B的友元类
public:
void display()
{
cout << this->a << endl;
}
private:
int a;
};
 
class C
{
public:
void Set(int i)
{
Bobject.a = i;
}
void Display()
{
Bobject.display();
}
private:
B Bobject;//C中有个B,C是B的子属性
};
void main()
{
C c1;
c1.Set(100);
c1.Display();
system("pause");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值