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

丹东公司做网站重庆网站建设 观音桥

丹东公司做网站,重庆网站建设 观音桥,网站js代码检测,汉中做网站电话友元 意义 程序中,有些私有属性也想让类外特殊的一些函数或者类进行访问,就要用到友元技术 关键字 friend 友元的三种实现 全局函数做友元 class Room{friend void test(Person &p);//friend class test;public:string phone_number;private:string…

友元

  • 意义
    • 程序中,有些私有属性也想让类外特殊的一些函数或者类进行访问,就要用到友元技术
  • 关键字
    • friend
  • 友元的三种实现
    • 全局函数做友元
    class Room{friend void test(Person &p);//friend class test;public:string phone_number;private:string bedroom;
    }void test(Person &p){cout << p->bedroom << endl;}
    
    • 类做友元
      • friend class test;
    • 成员函数做友元
      • friend void GoodGay::visit();
      • GoodGay类下的visit成员函数作为本类的好朋友可以访问私有成员

运算符重载

  • 概念
    • 对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型
    • 主要是重载函数的函数名就是operator,这是编译器起好的
  • 加号
    • 成员函数重载
    • 调用的本质Person p3 = p1.operator+(p2);
      class Person{public:Person operator+(Person &p){Person temp;temp.m_A = this->m_A + p.m_A;temp.m_B = this->m_B + p.m_Areturn temp;}}
    
    • 全局函数重载
    • 调用的本质Person p3 = operator+(p1, p2);
      Person operator+(Person &p1, Person &p2){Person temp;temp.m_A = p1.m_A + p2.m_A;temp.m_B = p1.m_B + p2.m_B;return temp;}
    
    • 函数重载依然适用于符号重载
  • 左移—输出—可以输出自定义数据类型—需要配合友元
    • 成员函数—不可行—因为无法实现对象在右边这种情况
      • p.operator<<(cout)简化为p << cout
    • 只能利用全局函数重载
      • operator<<(cout, p) 简化 cout << p
      ostream& operator<<(ostream& cout, Person &p){cout << "m_A = " << p.m_A;return cout;}//cout其实也是一个对象,为了满足链式编程,故而不可以重新创建后返回因此采用引用
    
    • 问题—如果是私有属性,这种全局函数无法访问怎么办—友元函数
  • 递增/递减运算符重载—存在前置递增和后置递增
    • 前置递增和后置递增的区分—采用占位参数
    • 前置递增返回的是引用,后置递增返回的是数值
      • 因为后置递增返回的是临时对象
      class Num{friend ostream& operator<<(ostream& cout, Num n);private:int n_Num;public:Num(int a): n_Num(a) {return ;}Num& operator++(void){n_Num++;return *this;}Num operator++(int){Num temp = (n_Num);n_Num++;return temp;}   };ostream& operator<<(ostream& cout, Num& n){cout << n.n_Num << endl;return cout;}int main(){Num n(1);cout << n++ <<endl;cout << n << endl;cout << ++n << endl;return 0;}
    
  • 赋值运算符
    • 赋值运算=其实也是默认就有的—属性值拷贝
    • 编译器提供的赋值运算符的操作是一个浅拷贝的操作,因此在涉及到内存问题时候需要进行深拷贝,故而需要进行重载
    • = 有连续赋值行,因此,涉及到链式编程
      class Age{friend ostream& operator<<(ostream& cout, Age& n);private:int* m_age;public:Age(int age){m_age = new int(age);}Age(const Age& age){if(m_age != NULL){delete m_age;m_age = NULL;}m_age = new int(*age.m_age);}Age& operator=(Age &p){if(m_age != NULL){delete m_age;m_age = NULL;}m_age = new int(*p.m_age);return *this;}~Age(){if(m_age != NULL){delete m_age;m_age = NULL;}}};ostream& operator<<(ostream& cout, Age& n){cout << *n.m_age << endl;return cout;}int main(){Age a(10);Age b(20);Age c(30);cout << a << endl;cout << b << endl;cout << c << endl;a = b = c;cout << a << endl;return 0;}
    
  • 关系运算符
    • 意义
      • 让两个对象可以进行比较
      class Person{public:int m_age;string m_name;Person(string m_name, int m_age){this->m_name = m_name;this->m_age = m_age;}bool operator==(Person& p){if(this->m_age == p.m_age && this->m_name == p.m_name){return true;}return false;}bool operator!=(Person& p){if(this->m_age != p.m_age || this->m_name == p.m_name){return true;}return false;}};
    
  • 函数调用运算
    • ()也可以重载
    • 由于重载后使用的方式非常像函数的调用,因此称为访函数
    • 访函数没有固定写法,非常灵活
      class Myprintf{public:void operator()(string test){cout << test << endl;}}Myprintf printf;printf("hello cpp");
    
  • 匿名函数
    • 类型()
    • Myprintf()(“hello cpp”);
http://www.yayakq.cn/news/493320/

相关文章:

  • 万盛建设局官方网站国人原创wordpress主题排行
  • 燕郊的大型网站建设合肥专业做网站
  • 哪个网站可以做兼职ppt模板房管局网站建设方案
  • 做网站的收费多个wordpress站点同步
  • 青岛网站建设制作推广wordpress怎么做采集
  • 涉及部署未备案网站国际知名设计公司的新方案
  • 阿里巴巴做网站吗西安域名注册
  • google如何提交网站全球速卖通注册条件
  • 做视频网站服务器外贸网站如何制作
  • 外贸网站建设网页上海网站建设公司页溪网络
  • 给企业做网站推广好么工业产品设计流程图
  • 外贸自己做网站好不好四川网站营销seo什么价格
  • 手机搭建电脑做的网站怎样申请网站呢
  • 建个网站在哪备案杭州网站前端建设
  • 网络销售 市场推广惠州seo代理计费
  • 建设网站的公司专业服务传奇游戏在线玩网页版
  • 台州超值营销型网站建设地址做网站系统如何保证自己的版权
  • 宝安网站设计制作网络seo营销推广
  • 网站建设的流程是什么wordpress文章批量编辑
  • 微信分享接口网站开发太原自助建站软件
  • iis7配置asp网站泉州优化营商环境
  • 企业网站模板网页模板南宁中考招生信息网
  • 计算机网站维护建设建设一个小说网站的步骤
  • 深圳系统开发高端网站建设西安百度推广外包
  • 网站左侧固定广告代码免费下载微信小程序
  • 传媒公司网站模板简单公司网站模版
  • 淄博免费网站建设哪家好临沂企业建站程序
  • 如何用iis做网站dw下载免费中文版
  • 做网站申请个体户做啥英文网站赚钱
  • 百度做网站骗人到哪里去投诉建设局怎么进