友元函数,友元类

友元函数:知识点1.友元函数的作用:该函数可以直接访问对象的私有数据成员知识点2.现在假设有一个类A,有一个函数B,函数B在类A外(可以在其他类内,也可以是普通的全局函数),在类A中用friend对函数B进行声明,则函数B就是类A的友元函数。从而类A的友元函数B就可以访问类A的私有数据成员知识点3.某个类的友元函数在类的公有区声明和私有区声明,效果是一样的知识点4.友元函数的声明:在类A...
摘要由CSDN通过智能技术生成

友元函数:

知识点1.友元函数的作用:该函数可以直接访问对象的私有数据成员

知识点2.现在假设有一个类A,有一个函数B,函数B在类A外(可以在其他类内,也可以是普通的全局函数),在类A中用friend对函数B进行声明,则函数B就是类A的友元函数。从而类A的友元函数B就可以访问类A的私有数据成员

知识点3.某个类的友元函数在类的公有区声明和私有区声明,效果是一样的

知识点4.普通函数A作为友元函数时,由于友元函数不是类的成员函数,所以函数A没有this指针,因此友元函数的参数有以下两种形式:
1.如果要访问该类的非静态数据成员,需要将该类的对象作为形参;
2.如果要访问该类的静态数据成员,或全局变量,不需要将该类的对象作为形参;

知识点5.友元函数的声明:

1.普通函数变友元函数

类内:声明友元函数要加friend,

格式:friend 函数的类型 函数名(类名&改类的一个对象a)

类外:定义时friend要去掉,类内friend后面跟什么,类外定义时友元函数的头部就写什么

格式:函数的类型 函数名(类名&改类的一个对象a){…}
e.g

class Boat{
   
private:
	int weight;
public:
	Boat(int w=0):weight(w){
   }
	friend void display_weight(Boat &a);
};
void display_weight(Boat &a){
   
	cout<<a.weight<<endl;
}

2.其他类的成员函数变友元函数

类内:声明友元函数要加friend

格式:friend 函数的类型 函数所属的原来的类 函数名(类名&改类的一个对象a)

类外:定义时friend要去掉,类内friend后面跟什么,类外定义时友元函数的头部就写什么

格式:函数的类型 函数所属的原来的类 函数名(类名&改类的一个对象a){…}
e.g

class Date;//不完全声明
class Time{
   
private:
	int sec;
	int minute;
	int hour;
public:
	Time(int h,int m,int s):hour(h),minute(m),sec(s){
   }
	void display(Date &);
};
class Date{
   
private:
	int day;
	int month;
	int year;
public:
    Date(int y,int m,int d):year(y),month(m),day(d){
   }
	friend void Time::display(Date &);
};

void Time::display(Date &d){
   
	cout<<d.year<<' '<<d.month
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值