c++友元类的三种基本实现。

1、全局函数作为友元。

当全局函数作为友元,这个函数可以访问 朋友类中的私有属性和私有函数。

需要在该类中申明。不需要声明为公开。

	
class Student{
    //声明test05方法是Student类的友元,好朋友
	friend void test05();
    
public:
    Student(string name, int id);//构造函数
private:
	string name;
	int id;
}

函数实现:

void test05() {//引用传入
	Student stu("小红",16);
	cout << stu.id << endl;
	cout << stu.name << endl;
}

2、友元类

在另一个类中可以访问本类的私有属性和私有的函数

需要在本类中申明 朋友类

class Student{ 
	//说明类Teacher是本类的朋友,可以访问本类的私有属性
	friend class Teacher;    
public:
    Student(string name, int id);//构造函数
private:
	string name;
	int id;
}

领一个类如何调用:

class Teacher {

public:
	Teacher();
	Student* st;
	void visit();
	void visit2();
};

//构造函数默认初始化
Teacher::Teacher(){
	st = new Student("小明", 4);
}


void Teacher::visit() {
	cout << "visit 访问了:" << st->name << endl;
	cout << "visit 访问了:" << st->id << endl;

}

3、友元成员函数

​ 另一个类中的一个函数,可以访问本类中的私有属性。

使用时,要先在另一个类中创建本类对象,但创建时要先在类外的上面,先声明有这个类存在,否则会报错

class Student;

class Teacher {

public:
	Teacher();
	Student* st;
	void visit();
	void visit2();
};

//构造函数默认初始化
Teacher::Teacher(){
	st = new Student("小明", 4);
}


void Teacher::visit() {
	cout << "visit 访问了:" << st->name << endl;
	cout << "visit 访问了:" << st->id << endl;

}

上面是在友元类的操作

在本类中,需要对朋友函数进行声明。

并且本类和友元函数所在的类要在同一个文件内,友元类要在本类上面。否则本类中的声明找不到是哪一个类。

class Student
{
	//说明Teacher 类 作用域里的visit()函数,是本类的朋友,可以访问本类里的私有属性
	friend void Teacher::visit(); 
    
private:
	string name;
	int id;
};

排布结构:

//先声明本类,因为需要在友元函数所在的类中构造本类
class Student;

//然后需要声明友元函数所在的类
class Teacher {
    ······
}

//然后声明本函数,以为在本函数中有Teacher类作用域,所以需要先声明Teacher
class Student
{
	······
};
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值