当前位置: 首页 > news >正文

网站集约化建设试点wordpress输入密码注册

网站集约化建设试点,wordpress输入密码注册,wordpress免插件图床,google图片搜索引擎入口一、友元 友元&#xff08;friend&#xff09;是C中的一种特殊关系&#xff0c;用于在类之间共享访问权限。通过将一个函数或类声明为另一个类的友元&#xff0c;我们可以允许友元访问声明类的非公有成员。 二、友元函数 问题&#xff1a;现在尝试去重载operator<<&am…

一、友元

友元(friend)是C++中的一种特殊关系,用于在类之间共享访问权限。通过将一个函数或类声明为另一个类的友元,我们可以允许友元访问声明类的非公有成员。

二、友元函数

问题:现在尝试去重载operator<<,然后发现没办法将operator<<重载成成员函数。因为cout的
输出流对象和隐含的this指针在抢占第一个参数的位置。this指针默认是第一个参数也就是左操作
数了。但是实际使用中cout需要是第一个形参对象,才能正常使用。所以要将operator<<重载成
全局函数。但又会导致类外没办法访问成员,此时就需要友元来解决。
 

class Date
{
public:Date(int year, int month, int day): _year(year), _month(month), _day(day){}// d1 << cout; -> d1.operator<<(&d1, cout); 不符合常规调用
// 因为成员函数第一个参数一定是隐藏的this,所以d1必须放在<<的左侧ostream& operator<<(ostream& _cout){_cout << _year << "-" << _month << "-" << _day << endl;return _cout;}
private:int _year;int _month;int _day;
};

友元函数可以直接访问类的私有成员,它是定义在类外部的普通函数,不属于任何类,但需要在
类的内部声明,声明时需要加friend关键字。

class Date
{friend ostream& operator<<(ostream& _cout, const Date& d);friend istream& operator>>(istream& _cin, Date& d);
public:Date(int year = 1900, int month = 1, int day = 1): _year(year), _month(month), _day(day){}
private:int _year;int _month;int _day;
};
ostream& operator<<(ostream& _cout, const Date& d)
{_cout << d._year << "-" << d._month << "-" << d._day;return _cout;
}
istream& operator>>(istream& _cin, Date& d)
{_cin >> d._year;_cin >> d._month;_cin >> d._day;return _cin;
}
int main()
{Date d;cin >> d;cout << d << endl;return 0;
}

 

需要注意以下几点:

  1. 友元函数可访问类的私有和保护成员,但不是类的成员函数
  2. 友元函数不能用const修饰
  3. 友元函数可以在类定义的任何地方声明,不受类访问限定符限制
  4. 一个函数可以是多个类的友元函数
  5. 友元函数的调用与普通函数的调用原理相同

 

三、友元类 

【注意】:

  1. 友元类的所有成员函数都可以是另一个类的友元函数,都可以访问另一个类中的非公有成员。
  2. 友元关系不能传递
  3. 如果C是B的友元, B是A的友元,则不能说明C时A的友元。
  4. 友元关系不能继承
  5. 友元关系是单向的,不具有交换性。
class Time
{friend class Date; // 声明日期类为时间类的友元类,则在日期类中就直接访问Time类//中的私有成员变量
public:Time(int hour = 0, int minute = 0, int second = 0): _hour(hour), _minute(minute), _second(second){}
private:int _hour;int _minute;int _second;
};
class Date
{
public:Date(int year = 1900, int month = 1, int day = 1): _year(year), _month(month), _day(day){}void SetTimeOfDate(int hour, int minute, int second){// 直接访问时间类私有的成员变量_t._hour = hour;_t._minute = minute;_t._second = second;}
private:int _year;int _month;int _day;Time _t;
};

http://www.yayakq.cn/news/151989/

相关文章:

  • 交易平台网站制作网站建设php论文
  • 西安响应式网站建设公司公司域名注册注意事项
  • 微信网站建设报价工程建设信息网站
  • 网站建设中英语大连网站建设领超最好
  • 网站开发常用小图片企业信息查询网官网
  • 学校网站建设计入哪个会计科目厦门网页定制
  • 学做烘培的网站宁波seo排名公司
  • 网站开发公司网站官网哪个网站做外贸假发好
  • 网站建设电商深圳创建公司注意事项
  • 清远建设局网站网站开发语言查询
  • 网站开发 平台西坝河网站建设
  • 呼和浩特做网站的公司后缀int网站
  • 网站开发的条件做网站的费用如何入帐
  • 网站基础设施建设中国企业500强公司
  • c 做网站优点哈尔滨网站制作开发报价
  • 公开课网站建设华阳路街道网站建设
  • 做企业网站cms百度app官方下载安装
  • 吉安网站设计遂宁市建设局网站
  • 怎么做网站图片链接合肥住房和城乡建设局
  • 兰州需要做网站的公司有哪些淄博网站制作形象
  • 做营销网站那个好怎样建淘宝客网站
  • 好用的土木建筑网站ui培训
  • 做高仿表网站o2o家电维修网站开发
  • 建网站公司下载快手运维是做什么的
  • 郑州做个人网站的公司高匿代理ip
  • 广宁网站建设如何用dw做网站地图
  • 网站响应式建设怎么做好企业网站
  • 化妆品网站建设方案贵阳双龙区建设局网站
  • 中山门户网站建设建立网站后怎样收费吗
  • 深圳 网站设计公司价格华蓥网站建设