友元函数

  • 友元函数
#include<iostream>
using namespace std;
class Date;    //提前引用声明 
class Time{
	public:
		Time(int,int,int);
		void display(Date &);    //形参类是对date对象的引用 
	private:
		int hour;
		int minute;
		int sec; 
}; 										//该函数可以引用date中的所有数据 

class Date{
	public:
		Date(int,int,int);     				//声明了time类的display是date类的朋友 
		friend void Time::display(Date &);    //声明Time中的display函数为友元成员函数  
	private:
		int mouth;
		int day;
		int year; 
}; 

Time::Time(int h,int m,int s){    //类Time的构造函数 
	hour=h;
	minute=m;
	sec=s;
} 

void Time::display(Date &d){    //输出年月日和时分秒 
	cout<<d.mouth<<d.day<<d.year<<endl;
	cout<<hour<<minute<<sec<<endl;
} 

Date::Date(int m,int d,int y){
	mouth=m;
	day=d;
	year = y;
}

int main(){
	Time t1(10,13,56);
	Date d1(12,25,2004);
	t1.display(d1);			//调用友元函数范文有关类的私有数据方法 
	return 0;    			//在函数名display的前面要加display所在的对象名 
}							//display成员函数的实参是date对象d1,否则就不能访问对象d1中的私有数据 
							//在time::display函数中引用date类私有数据是必须加上对象名,如d.mouth 
``


p53-37ti
```c
#include<iostream>
using namespace std;
class Base{
	//类中定义函数不用加; 
	public:
		Base(int i){
			cout<<i;
		}
		~Base(){}
}; 
class Base1:virtual public Base{
		public:
		Base1(int i,int j=0):Base(j){
			cout<<i;
		}
		~Base1(){}
};
class Base2:virtual public Base{
		public:
		Base2(int i,int j=0):Base(j){
			cout<<i;
		}
		~Base2(){}
};
class Driver:public Base1,public Base2{
		public:
		Driver(int a,int b,int c,int d):mem1(a),mem2(b),Base1(c),Base2(d),Base(a){
			cout<<b;
		}
		private:
			Base2 mem2;
			Base1 mem1;
};

int main(){
	Driver objD(1,2,3,4);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值