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

网站建设招标文件技术部分通道一通道二通道三免费

网站建设招标文件技术部分,通道一通道二通道三免费,百度免费推广,福建省建设工程造价站官方网站概述 我们知道#xff0c;C的类具有封装和信息隐藏的特性。一般情况下#xff0c;我们会封装public的成员函数供用户调用#xff0c;而将成员变量设置为private或protected。但在一些比较复杂的业务情况下#xff0c;可能需要去访问对象中大量的private或protected成员变量…概述 我们知道C的类具有封装和信息隐藏的特性。一般情况下我们会封装public的成员函数供用户调用而将成员变量设置为private或protected。但在一些比较复杂的业务情况下可能需要去访问对象中大量的private或protected成员变量。如果为这些private或protected成员变量都封装public成员函数无疑是比较麻烦的有时候还会影响程序的执行效率。此时友元函数就派上了用场。 这就好比我们的房间安装了一个指纹锁陌生人是无法进入房间内部的。但我们的好朋友有时候需要去一下房间此时可以把好朋友的指纹也录入指纹锁里面。这样好朋友就可以顺利进入房间了。 基本规则 1、一个类的友元可以是函数称为友元函数也可以是另一个类称为友元类。 2、要为一个类声明友元时需要在类声明中友元函数或友元类的前面加上friend关键字。类中友元的位置没有关系放在public、protected和private均可。 class CBase {friend class CFriend; // 友元类friend void FriendFunc(CBase base); // 友元函数 public:CBase();private:void Show();protected:std::string m_strText;private:int m_nNumber; };CBase::CBase() : m_strText(CSDN), m_nNumber(66) {NULL; }void CBase::Show() {printf(info is: %s, %d\n, m_strText.c_str(), m_nNumber); } 3、友元函数的原型虽然在类的声明中出现过但友元函数不是类的成员函数不能访问类对象的this指针。 CBase base; base.FriendFunc(base); // 友元函数不是类的成员函数会发生编译错误 4、友元函数或友元类的定义均在类的外部但有权访问类的private和protected成员。 void FriendFunc(CBase base) {base.Show(); // 访问私有成员函数base.m_strText Welcome; // 访问受保护成员变量base.m_nNumber 99; // 访问私有成员变量 } 5、基类的友元属性不能被派生类继承就好比你有一个好朋友但这个好朋友不一定是你儿子和孙子的好朋友。 6、友元破坏了类的封装性和隐藏性非必要的情况下不建议使用更不能滥用。 全局友元函数 将全局函数作为类的友元函数此时该友元函数可以访问类对象的private或protected成员也可以访问类的private或protected静态成员。可参看下面的示例代码。 class CBase {friend void FriendFunc(CBase base); public:CBase();private:void Show();protected:std::string m_strText;private:int m_nNumber;static int m_sData; };int CBase::m_sData 88;CBase::CBase() : m_strText(CSDN), m_nNumber(66) {NULL; }void CBase::Show() {printf(info is: %s, %d\n, m_strText.c_str(), m_nNumber); }void FriendFunc(CBase base) {base.Show();base.m_strText Welcome;base.m_nNumber 99;base.Show();printf(data is: %d\n, CBase::m_sData); }CBase base; FriendFunc(base); 上述示例代码的输出如下 info is: CSDN, 66 info is: Welcome, 99 data is: 88 友元类 将另一个类作为类的友元类此时该友元类可以访问类对象的private或protected成员也可以访问类的private或protected静态成员。可参看下面的示例代码。 class CBase {friend class CFriend; public:CBase();private:void Show();protected:std::string m_strText;private:int m_nNumber;static int m_sData; };int CBase::m_sData 88;CBase::CBase() : m_strText(CSDN), m_nNumber(66) {NULL; }void CBase::Show() {printf(info is: %s, %d\n, m_strText.c_str(), m_nNumber); }class CFriend { public:void ShowBase1(const CBase base);void ShowBase2(); };void CFriend::ShowBase1(const CBase base) {printf(friend base1: %s, %d\n, base.m_strText.c_str(), base.m_nNumber); }void CFriend::ShowBase2() {printf(friend base2: %d\n, CBase::m_sData); }CBase base; CFriend fri; fri.ShowBase1(base); fri.ShowBase2(); 上述示例代码的输出如下 friend base1: CSDN, 66 friend base2: 88 类的成员函数作为友元 申明友元类时友元类中的所有函数都可以访问类的private或protected成员。为了限制访问权限可以只允许类的特定成员函数作为友元函数。可参看下面的示例代码。 class CBase;class CFriend { public:void ShowBase1(const CBase base);void ShowBase2(); };class CBase {friend void CFriend::ShowBase1(const CBase base); public:CBase();private:void Show();protected:std::string m_strText;private:int m_nNumber;static int m_sData; };int CBase::m_sData 88;CBase::CBase() : m_strText(CSDN), m_nNumber(66) {NULL; }void CBase::Show() {printf(info is: %s, %d\n, m_strText.c_str(), m_nNumber); }void CFriend::ShowBase1(const CBase base) {printf(friend base1: %s, %d\n, base.m_strText.c_str(), base.m_nNumber); }void CFriend::ShowBase2() {// 编译出错因为CFriend::ShowBase2不是CBase的友元无法访问私有的静态变量printf(friend base2: %d\n, CBase::m_sData); }CBase base; CFriend fri; fri.ShowBase1(base); fri.ShowBase2(); 运算符重载中使用友元 友元的使用场景一个是联系紧密、协调工作的类与函数、类与类之间另一个就是运算符重载。可参看下面的示例代码。 class CBase {friend std::ostream operator (std::ostream out, const CBase base); public:CBase();protected:std::string m_strText;private:int m_nNumber; };CBase::CBase() : m_strText(CSDN), m_nNumber(66) {NULL; }std::ostream operator (std::ostream out, const CBase base) {// 运算符重载函数作为CBase的友元函数可访问CBase内的私有成员和受保护成员out base dump: base.m_strText.c_str() , base.m_nNumber;return out; }CBase base; std::cout base std::endl; // 输出为base dump: CSDN,66
http://www.hkea.cn/news/14352169/

相关文章:

  • 稀奇古怪好玩有用的网站临沂做进销存网站
  • 长春火车站停车场24小时收费标准台州seo
  • 网站建立的流程一键生成静态网页
  • 如何自己做个网站投资5万的小型加工厂
  • 营销型网站建设式球磨机公司制作网站跟企业文化的关系
  • 重庆专业网站排名团队网站logo一般做多大
  • 济南做网站优化哪家好广州的百度推广公司
  • 4s店网站建设方案娄底住房和城乡建设部网站
  • 做旅游网站一年能挣多少移动互联网的概念
  • 跨境浏览网站教师做课题可以参考什么网站
  • 重庆建站模板厂家网页微信客户端下载
  • 做招标代理应关注的网站网站设计高度
  • 电子商务主要学什么专业课程seo外链专员工作要求
  • 我想做个网站怎么做网站推广策划思路与执行
  • 临沂设计网站的公司wordpress国内网站
  • 黄埔网站建设公司河源做网站的客户
  • 菜谱网站开发wordpress 手机版
  • 网站建设二级页面方案网站想更换服务器怎么做
  • 新津公园城市建设局网站网站后台生成文章很慢
  • 怎样手机网站建设有赞分销模式佣金
  • 怎么去找做网站的福州便民生活网
  • 汕头网站制作多少钱温州网站建设免费服务
  • 通州宋庄网站建设广东做网站的公司
  • 网站开发 属于研发费用吗网页空间和数据库的区别
  • 做龙之向导网站有用吗站长统计幸福宝
  • 简约大方的网站网络公司哪家好
  • 常德网络建站文章类网站
  • 旅游网站建设的结论江苏华东建设基础工程有限公司网站
  • 平度网站建设公司电话sq网站推广
  • 做好网站买了空间域名怎么做电玩网站