c++初级 之 友元类

一个类的友元函数和友元类可以访问该类的所有成员(包括私有),是比继承还要亲密的关系。。亲不如友系列。

另外,友元是单向的,而且没有传递性,比如b是a的友元(a把b当朋友),c是b的友元(b把c当朋友),即a->b->c,那么b可以访问a的所有成员,c可以访问b的所有成员,反过来却不行(一厢情愿),a和c也没有任何关系(朋友的朋友不是我的朋友)。

以下为例:

Time.h


#ifndef TIME_H
#define TIME_H
//值得注意的一点是:Mtach是Time的友元类,但Time不是Match的友元类,友元是单向的。而且友元没有传递性

class Match;//要声明这一句,因为下文提到了类Match
//上一句和#include"Match.h"的区别在于,上句只是声明了一下以便于下文使用到类Match的字眼,但是无法实例化Match对象也不能调用Match的成员。而include就可以。
class Time
{
	friend Match;
public:
	Time(int hour,int minute,int second);

private:
	void printTime();
	int m_iHour,m_iMinute,m_iSecond;

};







#endif

Time.cpp


#include"Time.h"
#include<iostream
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
友元类是指在一个类中,可以访问另一个类的私有成员和保护成员。使用友元类可以实现一些特殊的功能,如让两个类之间互相访问私有成员。下面是使用友元类的一些基本步骤: 1. 声明友元类 在要访问另一个类的私有成员或保护成员的类中,需要声明另一个类为友元类。例如: ```c++ class B; class A { public: void func(B& b); private: int x; friend class B; }; ``` 在上面的例子中,类A中声明了类B为友元类,这样类B就可以访问类A中的私有成员x。 2. 定义友元类 在被声明为友元类的类中,需要定义友元类。例如: ```c++ class A; class B { public: void func(A& a); private: int y; friend class A; }; void B::func(A& a) { a.x = 10; // 访问类A的私有成员x } ``` 在上面的例子中,类B中定义了一个函数func,参数是类A的引用。由于类A声明了类B为友元类,因此在函数func中可以访问类A的私有成员x。 3. 使用友元类 使用友元类很简单,只需要在需要访问私有成员或保护成员的地方调用友元类中的函数即可。例如: ```c++ int main() { A a; B b; b.func(a); // 访问类A的私有成员x return 0; } ``` 在上面的例子中,创建了类A的对象a和类B的对象b。在main函数中调用了类B中的函数func,传入了类A的对象a作为参数,这样就可以访问类A的私有成员x了。 需要注意的是,虽然使用友元类可以访问另一个类的私有成员和保护成员,但这并不是一个好的设计习惯。友元类破坏了类的封装性,会导致代码的可维护性变差,因此应该尽量避免使用友元类

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值