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

网站建设泽宇法律咨询东莞网站建设

网站建设泽宇,法律咨询东莞网站建设,学生个人网页制作 模板,郑州全员核酸文章目录加号#xff08;#xff09;运算符重载左移#xff08;#xff09;运算符重载递增#xff08;#xff09;运算符重载赋值#xff08;#xff09;运算符重载关系运算符重载函数调用运算符重载运算符重载概念#xff1a; 对已有的运算符重新进行定义运算符重载左移运算符重载递增运算符重载赋值运算符重载关系运算符重载函数调用运算符重载运算符重载概念 对已有的运算符重新进行定义赋予其另一种功能以适应不同的数据类型。 加号运算符重载 作用实现两个自定义数据类型相加的运算。 #includeiostream using namespace std;class Person { public://1、成员函数重载号/*Person operator(Person p){Person temp;temp.m_A this-m_A p.m_A;temp.m_B this-m_B p.m_B;return temp;}*/int m_A;int m_B; };//2、全局函数重载号 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; }//函数重载 Person operator(Person p1, int num) {Person temp;temp.m_A p1.m_A num;temp.m_B p1.m_B num;return temp; }void test() {Person p1;p1.m_A 10;p1.m_B 10;Person p2;p2.m_A 10;p2.m_B 10;Person p3 p1 p2;//1、成员函数重载本质调用//Person p3 p1.operator(p2);//2、全局函数重载本质调用 //Person p3 operator(p1, p2);Person p4 p1 100;//Personintcout p3.m_A p3.m_A endl;cout p3.m_B p3.m_B endl;cout p4.m_A p4.m_A endl;cout p4.m_B p4.m_B endl; }int main() {test();system(pause);return 0; }输出 p3.m_A20 p3.m_B20 p4.m_A110 p4.m_B110总结 1、对于内置的数据类型的表达式的运算符是不可能改变的 2、不要滥用运算符重载。 左移运算符重载 作用可以输出自定义数据类型。 #includeiostream using namespace std;class Person {friend ostream operator(ostream out, Person p);public:Person(int a,int b){m_A a;m_B b;}//利用成员函数重载左移运算符//p.operator(cout)简化版本pcout//不会利用成员函数重载因为无法实现cout在左侧/*void operator(cout){}*/ private:int m_A;int m_B; };//只能利用全局函数重载左移运算符 //ostream对象只能有一个 ostream operator(ostream out, Person p) {out m_A p.m_A m_B p.m_B;return out;//链式编程思想 }void test() {Person p(10, 20);cout p endl; }int main() {test();system(pause);return 0; }总结 重载左移运算符配合友元可以实现输出自定义数据类型。 递增运算符重载 作用通过重载递增运算符实现自己的整型数据 #includeiostream using namespace std;class MyInterger {friend ostream operator(ostream out, MyInterger myint);public:MyInterger(){m_num 0;}//前置//返回引用为了一种对一个数据进行递增操作MyInterger operator() {//先m_num;//再返回return *this;}//后置//void operator(int) int代表占位参数可以用于区分前置和后置递增MyInterger operator(int) {//先返回MyInterger temp *this;//记录当前本身的值然后让本身的值加1但是返回的是以前的值达到先返回后//再m_num;return temp;} private:int m_num; };ostream operator(ostream out, MyInterger myint) {out myint.m_num;return out; }//前置先 再返回 void test01() {MyInterger myInt;cout myInt endl;cout myInt endl; }//后置先返回 再 void test02() {MyInterger myInt;cout myInt endl;cout myInt endl; }int main() {test01();test02();system(pause);return 0; }总结前置递增返回引用后置递增返回值。 赋值运算符重载 c编译器至少给一个类添加4个函数 1、默认构造函数无参函数体为空 2、默认析构函数无参函数体为空 3、默认拷贝构造函数对属性进行值拷贝 4、赋值运算符operator对属性进行值拷贝 如果类中有属性指向堆区做赋值操作是也会出现深浅拷贝问题。 #includeiostream using namespace std;class Person {public:Person(int age){m_age new int(age);}//重载赋值运算符Person operator(Person p){if (m_age ! NULL){delete m_age;m_age NULL;}//编译器提供的代码是浅拷贝//m_age p.m_age;//提供深拷贝解决浅拷贝的问题m_age new int(*p.m_age);//返回自身return *this;}~Person(){if (m_age ! NULL){delete m_age;m_age NULL;}}int *m_age; };//前置先 再返回 void test() {Person p1(18);Person p2(20);Person p3(22);p3 p2 p1;//赋值操作cout p1的年龄为 *p1.m_age endl;cout p2的年龄为 *p2.m_age endl;cout p3的年龄为 *p3.m_age endl; }int main() {test();system(pause);return 0; }关系运算符重载 作用重载关系运算符可以让两个自定义类型对象进行对比操作。 #includeiostream using namespace std;class Person {public:Person(string name,int age){this-m_name name;this-m_age age;}//重载关系运算符bool operator(Person p){if (this-m_name p.m_name this-m_age p.m_age){return true;}else{return false;}}//重载关系运算符!bool operator!(Person p){if (this-m_name p.m_name this-m_age p.m_age){return false;}else{return true;}}string m_name;int m_age; };void test() {Person a(张三, 18);Person b(张三, 18);if (a b){cout a和b相等 endl;}else{cout a和b不相等 endl;}if (a ! b){cout a和b不相等 endl;}else{cout a和b相等 endl;} }int main() {test();system(pause);return 0; }函数调用运算符重载 函数调用运算符()也可以重载 由于重载后使用的方式非常像函数的调用因此称为仿函数 仿函数没有固定写法非常灵活。 #includeiostream using namespace std;class MyPrint { public://重载函数调用运算符void operator()(string test){cout test endl;} };void MyPrint02(string test) {cout test endl; }void test01() {MyPrint myprint;myprint(helloworld);//由于使用起来非常类似于函数调用因此称为仿函数MyPrint02(helloworld); }//仿函数调用非常灵活没有固定写法 //加法类 class MyAdd { public:int operator()(int num1, int num2){return num1 num2;} };void test02() {MyAdd myadd;//非匿名函数对象名字是myaddint ret myadd(100, 100);cout ret ret endl;//匿名函数对象cout MyAdd()(100, 100) endl; }int main() {test01();system(pause);return 0; }
http://www.hkea.cn/news/14454050/

相关文章:

  • 广州 建网站wordpress 下雪
  • 广州外贸网站建设 openwordpress安装插件出错
  • 网站建设的素材处理方式百度网首页登录入口
  • 在百度上做网站多少钱花卉物流园做网站的素材
  • win7网站服务器制作软件网站工程工资一般多少钱
  • 网站开发周期php网站开发师条件
  • 上海先进网站建设概念设计乐平市建设局网站
  • 百度刷自己网站的关键词江华县网站开发
  • 湖州公司网站建设网站利润
  • 新闻门户网站建设找做牙工作上哪个网站
  • 简要说明网站建设的步骤培训机构需要哪些证件
  • 如何设计制作一般的企业网站谷歌网站入口
  • 电商网站那些功能用到静态化功能做泰迪狗网站的意义
  • 免费培训seo网站线上免费推广平台都有哪些
  • 百度不收录你的网站产品免费网络营销
  • 海口建站模板厂家文登建设局官方网站
  • 成都网站建设金网科技响应式网站建设的未来发展6
  • 西乡移动网站建设酷炫html5网站
  • 成都网站设计开发公司wordpress加入自己的类库
  • 龙岩网站设计 都找推商吧系统网站内搜索关键字
  • php网站后台进不去分析seo做的不好的网站
  • 自己做网站seo优化公众号制作技巧
  • 上海市建设干部学校网站上海兼职做网站
  • 适合初学者模仿的网站网页设计与制作实训报告书
  • 做网站下载别人的图算不算侵权商丘市住房和城乡建设局网站
  • 网站建设可行性方案用python网站开发
  • 找人做网站要多少钱买CAD设计图做的网站
  • 自己做网站要不要钱专业网络推广公司排名
  • 中国建设银行网站查询余额网站开发前端模板
  • 建设共享经济网站的可行性网站后台不显示文章内容