📄 完美c++疑难解答-友元.txt
字号:
1.友元可以伪装成成员函数...为了访问数据成员.
#include "stdafx.h"
class Fish
{
public:
void Setfloat1( Fish &fish1);
friend void Setfloat3(Fish &fish3);
void Setfloat4(int CCDeath);
private:
int m_s;
};
void Fish::Setfloat1(Fish &fish1)
{
fish1.m_s=100;
cout<<fish1.m_s<<endl;
}
void Setfloat2(Fish &fish2)//肯定失败...
{
// fish2.m_s=100;
// cout<<fish2.m_s<<endl;
}
void Setfloat3(Fish &fish3)//Setfoat只要是Fish成员函数或友元函数就对数据成员进行操控...
{
fish3.m_s=100;
cout<<fish3.m_s<<endl;
}
void Fish::Setfloat4(int CCDeath)
{
m_s=CCDeath;
cout<<m_s<<endl;
}
void main()
{
Fish fish;
fish.Setfloat1(fish);
// Setfloat2(fish);
Setfloat3(fish);
fish.Setfloat4(5);
}
2.具有相同友元的了两个类....
#include "stdafx.h"
//Show(): 显示日期--class Day ; 显示时间 class Time
class Time;//记得
class Day
{
public:
Day(int year,int month,int day);
friend void ShowDayTime(const Day &day,const Time &time);
private:
int m_year,m_month,m_day;
};
Day::Day(int year,int month,int day)
{
m_year=year;
m_month=month;
m_day=day;
}
class Time
{
public:
Time(int hour,int min,int second);
friend void ShowDayTime(const Day &day,const Time &time);
private:
int m_hour,m_min,m_second;
};
Time::Time(int hour,int min,int second)
{
m_hour=hour;
m_min=min;
m_second=second;
}
void ShowDayTime(const Day &day,const Time &time)
{
cout<<"日期:"<<day.m_year<<"-"<<day.m_month<<"-"<<day.m_day<<endl;
cout<<"时间:"<<time.m_hour<<"-"<<time.m_min<<"-"<<time.m_second<<endl;
}
void main()
{
Time wo(15,44,56);
Day ni(2007,11,9);
ShowDayTime(ni,wo);
}
3.类的成员函数可以做另外一个类友元......
#include "stdafx.h"
//Show(): 显示日期--class Day ; 显示时间 class Time
class Time;//记得
class Day
{
public:
Day(int year,int month,int day);
void ShowDayTime(const Day &day,const Time &time);
private:
int m_year,m_month,m_day;
};
Day::Day(int year,int month,int day)
{
m_year=year;
m_month=month;
m_day=day;
}
class Time
{
public:
Time(int hour,int min,int second);
friend void Day::ShowDayTime(const Day &day,const Time &time);
private:
int m_hour,m_min,m_second;
};
Time::Time(int hour,int min,int second)
{
m_hour=hour;
m_min=min;
m_second=second;
}
void Day::ShowDayTime(const Day &day,const Time &time)
{
cout<<"日期:"<<day.m_year<<"-"<<day.m_month<<"-"<<day.m_day<<endl;
cout<<"时间:"<<time.m_hour<<"-"<<time.m_min<<"-"<<time.m_second<<endl;
}
void main()
{
Time wo(15,44,56);
Day ni(2007,11,9);
ni.ShowDayTime(ni,wo);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -