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

汕尾网站网站建设wordpress设置权限

汕尾网站网站建设,wordpress设置权限,网站开发协助方案,网站可以做怀孕单吗运算符重载 C为了增强代码的可读性引入了运算符重载,运算符重载是具有特殊函数名的函数,也具有其返回值类型,函数名以及参数列表。其返回值类型和参数列表与普通的函数类型。 函数名字为:关键字operator后面接需要重载的运算符号…

运算符重载

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

函数名字为:关键字operator后面接需要重载的运算符号

函数原型:返回值类型 operator操作符(参数列表)

注意:

  • 不能通过其他符号来创建新的操作符:比如operator@
  • 重载操作符必须有一个类类型参数
  • 用于内置类型的操作符其含义不能改变,例如:内置的整形+,不能改变其含义
  • 作为类成员函数重载时,其形参看起来必操作数目少1,因为成员函数的第一个参数为隐藏的this
  • .* :: sizeof ?: .注意以上5个运算符不能重载
// 全局的operator==
class Date
{
public:Date(int year = 1900, int month = 1, int day = 1){_year = year;_month = month;_day = day;}//private:int _year;int _month;int _day;
};
// 这里会发现运算符重载成全局的就需要成员变量是公有的,那么问题来了,封装性如何保证?
// 这里其实可以用我们后面学习的友元解决,或者干脆重载成成员函数。
bool operator==(const Date& d1, const Date& d2)
{return d1._year == d2._year&& d1._month == d2._month&& d1._day == d2._day;
}
void Test()
{Date d1(2018, 9, 26);Date d2(2018, 9, 27);cout << (d1 == d2) << endl;
}
class Date
{
public:Date(int year = 1900, int month = 1, int day = 1){_year = year;_month = month;_day = day;}// bool operator==(Date* this, const Date& d2)// 这里需要注意的是,左操作数是this,指向调用函数的对象bool operator==(const Date& d2){return _year == d2._year&& _month == d2._month&& _day == d2._day;}
private:int _year;int _month;int _day;
};

赋值运算符重载

  1. 赋值运算符重载格式
    • 参数类型const T&,传递引用可以提高传参效率
    • 返回值类型T&,返回引用可以提高返回的效率,有返回值是为了支持连续赋值
    • 检测是否自己给自己赋值
    • 返回*this:要符合连续赋值的含义
class Date {
public:Date(int year, int month, int day) {_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. 赋值运算符只能重载成类的成员函数不能重载成全局函数
class Date
{
public:Date(int year = 1900, int month = 1, int day = 1){_year = year;_month = month;_day = day;}int _year;int _month;int _day;
};
// 赋值运算符重载成全局函数,注意重载成全局函数时没有this指针了,需要给两个参数
Date& operator=(Date& left, const Date& right)
{if (&left != &right){left._year = right._year;left._month = right._month;left._day = right._day;}return left;
}
// 编译失败:
// error C2801: “operator =”必须是非静态成员

原因:赋值运算符如果不显式实现,编译器会生成一个默认的。此时如果在类外自己实现一个全局赋值运算符重载,就和编译器在类中生成的默认赋值运算符重载冲突了,所以赋值运算符重载只能是类的成员
在这里插入图片描述
3. 用户没有显式实现的时候,编译器会生成一个默认赋值运算符重载,以值的方式逐字节拷贝注意:内置成员类型变量是直接赋值的,而自定义类型成员变量需要调用对应类的赋值运算符重载完成赋值

class Time
{
public:Time(){_hour = 1;_minute = 1;_second = 1;}Time& operator=(const Time& t){if (this != &t){_hour = t._hour;_minute = t._minute;_second = t._second;}return *this;}
private:int _hour;int _minute;int _second;
};
class Date
{
private:// 基本类型(内置类型)int _year = 1970;int _month = 1;int _day = 1;// 自定义类型Time _t;
};
int main()
{Date d1;Date d2;d1 = d2;return 0;
}

既然编译器生成默认的赋值运算符重载函数已经可以完成字节序的值拷贝了,还需要自己实现嘛?当然简单的类是不需要的。还是来看看下面这个例子:
在这里插入图片描述

前置++和后置++重载

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;
};
int main()
{Date d;Date d1(2022, 1, 13);d = d1++;    // d: 2022,1,13   d1:2022,1,14d = ++d1;    // d: 2022,1,15   d1:2022,1,15return 0;
}
http://www.yayakq.cn/news/586082/

相关文章:

  • wordpress原创metaseo网络优化专员是什么意思
  • 站长之家seo综合查询网站设计做啥好
  • 广州做大型网站建设域名怎么制作网站
  • 网站建设网银seo咨询邵阳
  • app免费制作网站网页设计网站实例
  • 情侣手表网站怎么做网站倒计时
  • 英文seo全网营销与seo
  • 收录网站的二级域名typecho客户端wordpress
  • 什么内容能提高网站流量淮安建设局网站
  • html5写的网站有什么好处工业设计包括哪些方面
  • c可以做网站吗南京网站设计 联络南京乐识
  • 做网站课程androidapp开发入门
  • 网站域名所有权 查询班级网站建设开题报告
  • 电商网站设计与开发微信小程序本地服务器搭建
  • 做网站怎么添加背景图片湖北立方建设工程有限公司网站
  • wordpress优化插件机械类网站如何做网站优化
  • 哪有专做注册小网站的长沙企业关键词优化哪家好
  • 百度收录的网站标题 --百度商城app下载
  • 网站页面设计报告东道设计公司待遇如何
  • 做母婴育儿类网站好做seo排名吗织梦网站后台密码错误
  • 网站建设的任务规划报纸门户网站建设方案
  • 网站建设功能描述书公众号电影网站怎么做
  • 代运营网站建设西安手机网站制作
  • 范文写作网站工作简历模板范文
  • 绵阳网站关键词电商网站模板html
  • 免费做网站支持绑定中国工厂网
  • 滕州建网站哪家好高端网站开发
  • 没有网站怎么做淘宝客承德网站制作的流程
  • php网站开发wampseo网站推广工具
  • 聊城公司网站建设网站维护 公司简介