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

建设政府门户网站sem是什么职业岗位

建设政府门户网站,sem是什么职业岗位,深圳旅游网站建设,上海做家教去哪个网站一、什么是运算符重载 简单来讲就是对运算符赋予新的意义,但是又不能改变原有的含义,它本身也就是一个函数。运算符重载的本质是以函数的方式来体现。 二、运算符重载有几种 1、按照作用域来划分,有全局操作符重载函数和成员函数操作符重载函…

一、什么是运算符重载

        简单来讲就是对运算符赋予新的意义,但是又不能改变原有的含义,它本身也就是一个函数。运算符重载的本质是以函数的方式来体现。

二、运算符重载有几种

        1、按照作用域来划分,有全局操作符重载函数和成员函数操作符重载函数。

        2、按照操作数个数来划分,有单目运算符重载和双目运算符重载。

        通常来讲,往往把输入流和输出流运算符改写为全局操作符重载函数,普通的运算符改写为成员函数操作符重载函数。如果想要使用成员函数来重载输出流《 和 输入流》,必须在C++库中对应的类加入这个重载的成员函数,不建议使用。

三、运算符重载的特性

        1、不能新增运算符,只能对已有的C++运算符进行重载。

        2、不能改变操作数的个数,运算符重载后仍是原有操作数个数。

        3、尽量不改变语义,应当使重载运算符功能是类似相同。

        4、并不是所有的运算符都可以重载,以下5个运算符不能重载作用域运算符::,成员访问运算符.,类型长度运算符sizeof(),成员指针运算符.*,条件运算符?:

四、怎么实现运算符重载

        采用普通函数的调用方式来调用运算符重载函数,基本语法如下:

// 关键字operator不能省略
// 函数名:operator 运算符
// 参数列表:操作数的个数受原有运算符的操作数个数限定返回值 operator 运算符(参数列表)
{// 重载函数体
}

五、案例

        1、运算符重载的简单使用

#include <iostream>using namespace std;// 复数类
class Complex
{
private:int a;  // 实部int b;  // 虚部
public:Complex(int a = 0, int b = 0){this->a = a;this->b = b;}void show(){if(b < 0){cout << a << b << "i" << endl;}else{cout << a << "+" << b << "i" << endl;}}// 重载运算符+Complex& operator + (const Complex& op){static Complex temp;temp.a = this->a + op.a;temp.b = this->b + op.b;return temp;}// 重载运算符-Complex& operator - (const Complex& op){static Complex temp;temp.a = this->a - op.a;temp.b = this->b - op.b;return temp;}// 重载运算符*Complex& operator * (const Complex& op){static Complex temp;temp.a = this->a*op.a - this->b*op.b;temp.b = this->a*op.b + this->b*op.a;return temp;}// 重载运算符 / Complex& operator / (const Complex& op){static Complex temp;int x = op.a*op.a + op.b*op.b;temp.a = (this->a*op.a + this->b*op.b)/x;temp.b = (this->b*op.a - this->a*op.b)/x;return temp;}bool operator == (const Complex& op){return (this->a == op.a && this->b == op.b);}};int main()
{Complex A(1, 2);Complex B(1, 2);if(A == B){cout << "A == B" << endl;}Complex C = A + B;cout << "C = ";C.show();Complex D = A - B;cout << "D = ";D.show();Complex E = A * B;cout << "E = ";E.show();Complex F = A / B;cout << "F = ";F.show();return 0;
}

        2、全局操作符重载示例

#include <iostream>using namespace std;// 复数类
class Complex
{
private:int a;  // 实部int b;  // 虚部
public:Complex(int a = 0, int b = 0){this->a = a;this->b = b;}void show(){if(b < 0){cout << a << b << "i" << endl;}else{cout << a << "+" << b << "i" << endl;}}// 全局操作符重载,重载输入流和输出流,为了方便通常声明friend友元函数friend ostream& operator << (ostream & output, const Complex & other);friend istream& operator >> (istream & input,  Complex & other);};
// 可以改为以下定义,但是后面不能连续输入对象,即cout<< A << endl;是非法的,只能cout << A;
// void operator << (ostream & output, const Complex & other)ostream& operator << (ostream & output, const Complex & other)
{if(other.b < 0){output << other.a << other.b << "i";}else{cout << other.a << "+" << other.b << "i";}return output;}// 可以改为以下定义,但是后面不能连续输入对象,即cin>>A>>B;是非法的,只能cin>>A; cin>>B;
// void operator >> (istream & output, const Complex & other)
istream& operator >> (istream & input,  Complex & other)
{input >> other.a >> other.b;return input;
}int main()
{Complex A;Complex B;cin >> A >> B;  // 可以连续输入类对象cout << "A = ";A.show();cout << "B = " << B << endl;return 0;
}

        3、[]运算符和()运算符

#include <iostream>using namespace std;class Test
{
private:int *a;int len;
public:Test(int len = 1){this->len = len;if(len <= 0){cout << "len is less than 0" << endl;return;}a = new int[len];}~Test(){if(a != nullptr){delete [] a;a = nullptr;}}// 重载[]运算符函数int& operator[](int index){return a[index];}// 重载()运算符函数,变成所谓的仿函数,可以用类对象来作为函数名void operator()(int len){for(int i = 0; i < len; i++){cout << a[i] << " "; }cout << endl;}};int main()
{Test temp(5);for(int i = 0; i < 5; i++){temp[i] = i+1;  // 像数组那样来操作}temp(5);    // 像调用函数那样来操作return 0;
}

六、总结

        运算符重载通常是为了更加方便的操作类对象,但是并不是所有的运算符都可以重载,重载的运算符应该尽量跟原来运算符的含义相似,同时不能创造新的不属于C++的运算符。

http://www.mmbaike.com/news/99648.html

相关文章:

  • 网站加百度地图网站怎样被百度收录
  • office做网站的软件西安企业网站seo
  • 英语网站online实事新闻热点
  • 网站的设计需要什么互联网平台推广怎么做
  • 网站免费正能量软件直播百度关键词查询工具免费
  • 做网站多少钱_西宁君博优选seo软件全套
  • 别墅效果图网站网络优化公司
  • 哪个网站容易做二级域名网络引流怎么做啊?
  • 做幼儿网站的目标搜索词热度查询
  • 优秀网站设计模板网站建设开发简介
  • duplicator wordpress网站优化排名网站
  • 网站如何自己做优化谷歌浏览器下载官网
  • 自己怎么做网站优化广州信息流推广公司排名
  • 企业网站哪家做的好广告网络营销
  • 网站模版下载镇江百度公司
  • 公明网站建设足球积分排行榜最新
  • 电子商务网站开发公司全国网站排名
  • 特色的网站建设百度app下载安装 官方
  • 电子商务网站的建设360网站推广官网
  • 苏州做网站的公司哪家好留电话的广告网站
  • 做网站 传视频 用什么笔记本好附近成人电脑培训班
  • 网站建设 企业观点网站优化推广费用
  • 网站建设的计划seo sem什么意思
  • 免费网站建设新技术百度链接收录提交入口
  • 防内涵吧网站源码哪里有专业的培训机构
  • wordpress 评论 备份青岛seo网站关键词优化
  • 西乡做网站价格百度标注平台怎么加入
  • 东莞做网站哪里好seo自学网
  • 手机商城毕业设计厦门seo起梦网络科技
  • 大型科技网站建设网站优化比较好的公司