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

招聘网站做两份简历门户网站底部

招聘网站做两份简历,门户网站底部,石家庄公司的网站设计,打开网站8秒原则对已有的运算符进行重新定义,赋予不同的功能,以适应不同的数据类型 5.1 加号运算符 实现两个自定义数据类型的加运算 (1)通过成员函数实现“”重载 class Number { public:Number(int a, int b):m_A(a),m_B(b){}Number(){}Number operator(Number &a…

对已有的运算符进行重新定义,赋予不同的功能,以适应不同的数据类型

5.1 加号运算符

  • 实现两个自定义数据类型的加运算

(1)通过成员函数实现“+”重载

class Number
{
public:Number(int a, int b):m_A(a),m_B(b){}Number(){}Number operator+(Number & num)  // 成员函数重载+运算符{Number newNum;newNum.m_A = this->m_A + num.m_A;newNum.m_B = this->m_B + num.m_B;return newNum;}int m_A;int m_B;
};
​
Number num1(10, 15);
Number num2(15, 20);
Number num3 = num1 + num2; // 本质-->Number num3 = num1.operator+(num2);

(2)通过全局函数实现“+”重载

class Number
{
public:Number(int a, int b):m_A(a),m_B(b){}Number(){}
​int m_A;int m_B;
};
​
Number operator+(const Number & num1, const Number & num2)  // 全局函数重载+运算符
{Number newNum;newNum.m_A = num1.m_A + num2.m_A;newNum.m_B = num1.m_B + num2.m_B;return newNum;
}
​
Number num1(10, 15);
Number num2(15, 20);
Number num3 = num1 + num2; // 本质-->Number num3 = operator+(num1, num2);

(3)重载的运算符也可以发生函数重载-->实现不同功能的加法

class Number
{
public:Number(int a, int b):m_A(a),m_B(b){}Number(){}
​int m_A;int m_B;
};
​
Number operator+(const Number & num1, const Number & num2)  // 全局函数重载+运算符
{Number newNum;newNum.m_A = num1.m_A + num2.m_A;newNum.m_B = num1.m_B + num2.m_B;return newNum;
}
​
Number operator+(const Number & num1, int & a)  // +运算符函数重载(形参类型不同)
{Number newNum;newNum.m_A = num1.m_A + a;newNum.m_B = num1.m_B + a;return newNum;
}
​
Number num1(10, 15);
Number num2(15, 20);
Number num3 = num1 + num2; // 本质-->Number num3 = operator+(num1, num2);
int a = 10;
Number num4 = num1 + a; // 本质-->Number num4 = operator+(num1, a);

5.2 左移运算符重载

  • 实现自定义数据类型输出

(1)只能使用全局函数实现“<<”重载

class Number
{
public:int m_A = 10;int m_B = 20;
};
​
std::ostream & operator<<(std::ostream & cout, Number & num)
{cout << num.m_A << num.m_B;return cout;    // 用于链式编程 cout << endl;
}
​
int main()
{Number num;std::cout << num << std::endl;  // 本质operator<<(cout, num)// 重载的<<函数返回了ostream对象,可以链式编程
}

(2)“<<”重载函数访问私有成员-->友元

class Number
{friend std::ostream & operator<<(std::ostream & cout, Number & num); // 重载函数友元
private:int m_A = 10;int m_B = 20;
};
​
std::ostream & operator<<(std::ostream & cout, Number & num)
{cout << num.m_A << num.m_B;return cout;    // 用于链式编程 cout << endl;
}
​
int main()
{Number num;std::cout << num << std::endl;
}

5.3 递增运算符重载

  • 实现自定义数据类型自加

(1)前置++重载

class MyInt
{
public:MyInt(int a):m_a(a){}MyInt & operator++() // 重载前置++,用于对象成员自加{this->m_a = this->m_a + 1;retun *this;}int m_a;
};
​
std::ostream & operator<<(std::ostream & cout, MyInt a) // 重载左移运算符,用于对象输出
{cout << a.m_a;return cout;
}
​
int main()
{MyInt myint(10);std::cout << ++myint << std::endl;
}

(2)后置++重载

class MyInt
{
public:MyInt(int a):m_a(a){}MyInt operator++(int) // 重载后置++,使用int占位参数区分前置++和后置++重载{Myint tempint = *this; // 默认拷贝构造this->m_a = this->m_a + 1;return tempint;}
​int m_a;
};

5.4 赋值运算符重载

  • C++编译器为类提供默认赋值运算符重载函数operator=,对属性进行赋值
  • 自定义赋值运算符重载,实现对自定义类型数据进行赋值
  • 存在堆区成员属性:先清空自身堆区成员,再进行深拷贝
  • 两个已经创建好的对象,使用=,则使用的是重载赋值运算符(与默认拷贝函数的区别)
class Person
{
public:std::string m_name;int * m_age;
​Person(int age, std::string name){m_name = name;m_age = new int(age);}Person & operator=(const Person & p) // 重载赋值运算符{m_name = p.m_name;if(m_age != NULL) // 先删除自身从堆申请的内存{delete m_age;m_age = NULL;}m_age = new int(*p.m_age); // 使用传入的数据重新从堆区申请内存return *this; // 返回当前对象,用于链式编程:a=b=c}~Person(){if(m_age != NULL){delete m_age;m_age = NULL;}}
};
​
void test01()
{Person p1(10, "zhangsan");Person p2(30, "lisi");Person p3(20, "wangwu");p3 = p1 = p2;
}

5.5 关系运算符重载

  • 重载关系运算符,实现自定义数据类型之间的比较

class Person
{
public:int m_age;std::string m_name;Person(int age, std::string name):m_age(age),m_name(name){}bool operator==(const Person & p) // 重载==运算符,判断两个对象是否相等{if((m_age == p.m_age) && (m_name == p.m_name)){return true;}return false;}bool operator!=(const Person & p) // 重载!=运算符,判断两个对象是否不相等{if((m_age == p.m_age) && (m_name == p.m_name)){return false;}return true;}
};

5.6 函数调用运算符重载

  • 重载括号运算符,实现仿函数调用

class MyPrint
{
public:void operator()(int val) // 重载(),实现仿函数{std::cout << val << std::endl;}
};
​
int main()
{MyPrint printFunc;printFunc(10); // 类似函数的调用
}


文章转载自:

http://hBmbdAT6.nLryq.cn
http://arcIX25M.nLryq.cn
http://fbcbvPd3.nLryq.cn
http://o6wMuJfp.nLryq.cn
http://cVvUMJpK.nLryq.cn
http://PLzC15iW.nLryq.cn
http://xMcXBYMe.nLryq.cn
http://6gNNA3Vh.nLryq.cn
http://EA0PhGD1.nLryq.cn
http://jPZIvQH3.nLryq.cn
http://GtHAA6hz.nLryq.cn
http://DV0j4Wcx.nLryq.cn
http://pyJNPVDm.nLryq.cn
http://UJin6FCt.nLryq.cn
http://dCAT5WKs.nLryq.cn
http://LlSW2OPj.nLryq.cn
http://Qn59bb07.nLryq.cn
http://iq16m7KP.nLryq.cn
http://IFEDHv9u.nLryq.cn
http://XsYgHHKT.nLryq.cn
http://UDkIn8Gw.nLryq.cn
http://FeJs08KB.nLryq.cn
http://wmrz5NaY.nLryq.cn
http://T45ZLz4W.nLryq.cn
http://Quf7ahW2.nLryq.cn
http://CQHoDbP7.nLryq.cn
http://YIuLWv4v.nLryq.cn
http://eJzHhioy.nLryq.cn
http://uJz9Z3qQ.nLryq.cn
http://GO0zs2Z0.nLryq.cn
http://www.dtcms.com/wzjs/681243.html

相关文章:

  • 高端企业网站开发wordpress always主题
  • 做模型常说的d站是什么网站我要学网站建设
  • 怎么做音乐网站旅游网站开发参考文献
  • 一个上线的网站需要怎么做八桂职教网技能大赛2024
  • 新网站推广最直接的方法礼盒包装设计
  • it网站开发南宁网络
  • 重庆做网站重庆做网站电商网站设计文档
  • 邹城网站建设zczwxx怎么自己免费做网站
  • 国家企业信用公示系统官方网站机关单位建设网站 说明
  • 广州品牌网站设计价格初中学历怎么提升大专学历
  • 杭州网站设计精选柚v米科技云南网站建设效果好吗
  • 银行网站 设计方案登录网站定制
  • 建站行业发展前景舞蹈培训机构网站建设
  • php ajax网站开发典型实例辛集手机网站建设
  • 搬瓦工可以做网站吗怎么做网页设计的页面
  • 网站维护包含哪些内容架设网站服务器
  • 德州极速网站建设百家号wordpress缩小模块间距
  • 想要网站推广页个人网站开发如何赚钱
  • 网站源码小千个人网长沙网站优化seo
  • 网站设计大全推荐自己做的网站别人打不开
  • 网站栏目是什么潍坊网站制作发
  • 计算机网站建设体会上海最大的网站建设
  • 南阳网站设计wordpress主题发布
  • 怎样做自己的个人网站一个网站项目开发流程
  • 网站开发报价ppt怎么样建立自己的视频网站
  • 广州做手机网站信息云服务器怎么样做网站
  • 餐厅网站建设杭州互助盘网站开发
  • 外国购物网站设计风格东莞建设网站官网
  • 柳州营销网站建设深圳做网站多少
  • 查看网站百度排名wordpress查询数据库页面