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

全国建筑资质查询网站怎么做网站广告代理商

全国建筑资质查询网站,怎么做网站广告代理商,wordpress 企业插件,淘宝客怎么做网站管理C运算符重载详解 基本介绍运算符重载案列1. 赋值运算符重载2. 前置和后置重载3. cout,cin(流插入,流提取重载)4. 取地址重载 基本介绍 C为了增强代码的可读性引入了运算符重载,运算符重载是具有特殊函数名的函数,也具有其 返回值…

C++运算符重载详解

  • 基本介绍
  • 运算符重载案列
    • 1. 赋值运算符重载
    • 2. 前置++和后置++重载
    • 3. cout,cin(流插入,流提取重载)
    • 4. 取地址重载

基本介绍

C++为了增强代码的可读性引入了运算符重载,运算符重载是具有特殊函数名的函数,也具有其
返回值类型,函数名字以及参数列表,其返回值类型与参数列表与普通的函数类似。

(返回类型说明符) operator <想要重载的运算符符号>(参数)
{函数内容
}

注意:

  1. 不能通过连接其他符号来创建新的操作符:比如operator@
  2. 重载操作符必须至少有一个类类型参数
  3. 用于内置类型的运算符,其含义不能改变,例如:内置的整型+,不 能改变其含义
  4. 作为类成员函数重载时,其形参看起来比操作数数目少1,因为成员函数的第一个参数为隐
    藏的this
  5. .* :: sizeof ?: . 注意以上5个运算符不能重载。

运算符重载案列

1. 赋值运算符重载

赋值运算符重载格式
参数类型:const T&,传递引用可以提高传参效率
返回值类型:T&,返回引用可以提高返回的效率,有返回值目的是为了支持连续赋值
检测是否自己给自己赋值
返回*this :要复合连续赋值的含义

class Date
{
public:Date(int year = 1900, int month = 1, int day = 1){_year = year;_month = month;_day = day;}Date(const Date& d){_year = d._year;_month = d._month;_day = d._day;}Date& operator=(const Date& d){if (this != &d){_year = d._year;_month = d._month;_day = d._day;}return *this;}
private:int _year;int _month;int _day;
};

注意:

  1. 赋值运算符只能重载成类的成员函数不能重载成全局函数。
    原因:赋值运算符如果不显式实现,编译器会生成一个默认的。此时用户再在类外自己实现
    一个全局的赋值运算符重载,就和编译器在类中生成的默认赋值运算符重载冲突了,故赋值
    运算符重载只能是类的成员函数。
  2. 用户没有显式实现时,编译器会生成一个默认赋值运算符重载,以值的方式逐字节拷贝。
    所以,如果类中未涉及到资源管理,赋值运算符是否实现都可以;一旦涉及到资源管理则必
    须要实现

例如stack(栈)的实现中,必须自己实现赋值运算符重载。
在这里插入图片描述

2. 前置++和后置++重载

语法:
前置++
T& operator++();
后置++
T& operator++(int);

class Date
{
public:Date(int year = 1900, int month = 1, int day = 1){_year = year;_month = month;_day = day;}// 前置++:返回+1之后的结果// 注意:this指向的对象函数结束后不会销毁,故以引用方式返回提高效率Date& operator++(){_day += 1;return *this;}// 后置++:// 前置++和后置++都是一元运算符,为了让前置++与后置++形成能正确重载// C++规定:后置++重载时多增加一个int类型的参数,但调用函数时该参数不用传递,编译器自动传递// 注意:后置++是先使用后+1,因此需要返回+1之前的旧值,故需在实现时需要先将this保存一份,然后给this + 1//  而temp是临时对象,因此只能以值的方式返回,不能返回引用Date operator++(int){Date temp(*this);_day += 1;return temp;}
private:int _year;int _month;int _day;
};

3. cout,cin(流插入,流提取重载)

这里只需要记住语法形式就行了,我以日期类举例,注意这里我们需要提前将这两个函数作为日期类的友元函数。
又因为我们可能经常调用这两个函数,所以我们写成内联函数inline。

friend inline ostream& operator<<(ostream& out, const Date& d);
friend inline istream& operator >>(istream& in, Date& d);
//<<运算符重载
inline ostream& operator << (ostream& out, const Date& d)
{out << d._year << "年" << d._month << "月" << d._day << "日" << endl;return out;
}
//>>运算符重载
inline istream& operator >>(istream& in, Date& d)
{in >> d._year >> d._month >> d._day;return in;
}

4. 取地址重载

这个默认成员函数一般不用重新定义 ,编译器默认会生成。

class Date
{
public:Date* operator&(){return this;}const Date* operator&()const{return this;}
private:int _year; // 年int _month; // 月int _day; // 日
};

这个运算符一般不需要重载,使用编译器生成的默认取地址的重载即可,只有特殊情况,才需
要重载,比如想让别人获取到指定的内容

http://www.yayakq.cn/news/946600/

相关文章:

  • 广州招聘网站制作泰州专业网站建设制作
  • 网站开发人员薪酬公司注册地址可以变更吗
  • 优质专业建设申报网站网络科技公司怎么挣钱
  • 建设外贸网站的公司wordpress如何新建页面模板
  • 网站建设找谁营销型网站方案ppt模板
  • 建网站公司深专业建设规划方案模板
  • 衡水做淘宝网站网站开发必须要用js
  • 织梦网站需要优化网站前端开发框架
  • 广西智能网站建设平台4a级景区网站建设
  • 网页设计图片对齐方式seo优化方案
  • php网站开发学习河南省住房与建设注册中心网站
  • 汽车网站大全汽车网easyui 网站开发实现
  • 西平县住房城乡建设局网站企业自助建站的网站
  • 淄博网站公司做一个app需要多少费用
  • 能看网站的浏览器企业信息服务平台官网
  • 自己的网站怎么做关键词优化通过手机建设网站
  • dw软件下载官方网站网站业务
  • 实验室网站制作北京档案馆网站建设
  • 网站数据包括哪些内容免费申请移动手机卡
  • 杭州网站推广优化哪里好建设网站域名的选择
  • 辽宁省营商建设监督局网站自己做家具展示网站
  • 网站seo注意事项百度电话查询
  • 用wordpress搭建完整网站教程视频工作压力大怎样缓解焦虑情绪
  • 苏宁网站优化与推广秦皇岛黄金海岸好玩吗
  • 多域名一个网站备案内网门户网站建设
  • 大连网站建设 领超最好泷澄建设集团网站
  • 怎么样做钓鱼网站好的建站软件
  • 赤峰建设局网站网站开发中心
  • 域名到期网站做网站必须学php吗
  • 什么网站程序做资料库电商网站竞价推广策略