声明一个简单的类,其中包括其它类的对象,并实现这个类

文章介绍了如何声明和实现一个Computer类,该类包含CPU、RAM和CDROM对象。为了使Computer类的成员函数能访问这些对象的私有成员,将Computer声明为这三个类的友元类。代码示例展示了如何定义和使用这些友元关系来操作各个组件的私有数据。
摘要由CSDN通过智能技术生成

声明一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等,有两个公有成员函数ran、stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROML类的一个对象,声明并实现这个类。

从实验题目中可以看到:Computer类 包含CPU,RAM,CDROM三个类的对象,如果直接在Computer的私有成员中定义这三个类的对象,显然类Computer内嵌了类CPU,RAM,CDROM的对象,但是Computer的成员函数却无法直接访问它们的私有成员,,所以要想让其能使用,就必须对那三个类分别声明Computer是它们的友元类。

友元函数:

在类中用关键字friend 修饰的非成员函数,可以是一个普通的函数,也可以是其他类的成员函数。

友元类:

若A类为B类的友元类,则A类中的所有成员函数都是B类的友元函数,都可以访问B类的私有和保护成员。其语法形式:

class B

{

  ...          //B类的成员说明

friend class A;//A为B的友元类

};

注意点:

1.友元关系不能传递,不能是A是B的友元,B是C的友元,A和C之间没有说明,则不是友元关系;

2.友元关系是单向的,B是A的友元,B的成员函数可以访问A的私有和保护数据,但是A不能访问B的私有和保护数据;

3.友元关系是不能被继承的,及派生类无说明不是原来类的友元;

#include<iostream>
using namespace std;

class CPU
{
public:
	friend class Computer;//声明Computer是CPU的友元类
private:
	int i;
};

class RAM
{
public:
	friend class Computer;//声明Computer是RAM的友元类
private:
	int j;
};

class CDROML
{
public:
	friend class Computer;//声明Computer是CDROML的友元类
private:
	int k;
};

class Computer
{
public:
	void ran(int a,int b,int c);
	void stop();
private:
	CPU cpu;
	RAM ram;
	CDROML cdrom;
};
void Computer::ran(int a, int b, int c)
{
	cpu.i = a;
	ram.j = b;
	cdrom.k  = c;
	cout << a << b << c << endl;
}
void Computer::stop()
{
	cpu.i = 0;
	ram.j = 0;
	cdrom.k = 0;
	cout << cpu.i << ram.j << cdrom.k << endl;
}
int main()
{
	Computer computer;
	computer.ran(8,9,7);
	computer.stop();
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值