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

wordpress软件下载站主题带会员功能的网站

wordpress软件下载站主题,带会员功能的网站,大数据培训班,网站制作公司怎么样#x1f497;个人主页#x1f497; ⭐个人专栏——C学习⭐ #x1f4ab;点击关注#x1f929;一起学习C语言#x1f4af;#x1f4ab; 目录 导读 1. 为什么需要运算符重载 2. 运算符重载概念 3. 运算符重载示例 3.1 运算符重载 3.2 或运算符 4. 运算符重… 个人主页 ⭐个人专栏——C学习⭐ 点击关注一起学习C语言 目录 导读 1. 为什么需要运算符重载 2. 运算符重载概念 3. 运算符重载示例 3.1 运算符重载 3.2 或运算符 4. 运算符重载参数 5. 全局运算符重载函数 6. 赋值运算符重载 6.1 语法及概念 6.2 示例 6.3 为何使用引用 导读 前面我们学习了默认成员函数构造函数、析构函数和拷贝构造函数。 今天我们来学习赋值运算符重载。 1. 为什么需要运算符重载 我们一般的运算符只能对于数字进行运算或是比较大小但是如果我们想要对我们所定义的自定义类型进行运算呢 为了使自定义类型能够支持运算符操作可以通过运算符重载的方式来重新定义这些运算符使其能够在自定义类型上执行特定的操作。 比如我们定义了一个日期类想要对这个日期类进行加减运算亦或是比较两个日期的大小通过运算符重载即可实现。 2. 运算符重载概念 C为了增强代码的可读性引入了运算符重载运算符重载是具有特殊函数名的函数也具有其 返回值类型函数名字以及参数列表其返回值类型与参数列表与普通的函数类似。 函数名字为关键字operator后面接需要重载的运算符符号。 函数原型返回值类型 operator操作符(参数列表) 一般来说需要遵循以下几个原则 运算符的重载必须定义在类、结构体或枚举中。 运算符重载函数必须使用特殊的命名约定以指示要重载的运算符。 运算符重载函数可以是类的成员函数也可以是非成员函数。 运算符重载函数的参数和返回值类型应该与运算符原有的操作数类型相匹配。 运算符重载函数可以使用其他的运算符或已有的函数来实现其操作。 3. 运算符重载示例 3.1 运算符重载 我们来判断两个日期是否相等 我们需要依次比较年、月、日。 class Date { public:Date(int year 1900, int month 1, int day 1){_year year;_month month;_day day;}//operator运算符 做函数名bool operator (const Date y){return _year y._year _month y._month _day y._day;}private:int _year;int _month;int _day; };int main() {Date d1(2024, 2, 02);Date d2(2024, 2, 03);cout d1.operator (d2) endl;return 0; } 我们知道运算符重载也是默认成员函数之一也就是我们不去调用编译器也会自动帮我们调用。 比如 class Date { public:Date(int year 1900, int month 1, int day 1){_year year;_month month;_day day;}//operator运算符 做函数名bool operator (const Date y){return _year y._year _month y._month _day y._day;}private:int _year;int _month;int _day; };int main() {Date d1(2024, 2, 3);Date d2(2024, 2, 2);cout d1.operator (d2) endl;cout (d1 d2) endl;return 0; } 3.2 或运算符 判断两个日期的大小 class Date { public:Date(int year 1900, int month 1, int day 1){_year year;_month month;_day day;}//operator运算符 做函数名bool operator (const Date y){if (_year y._year){return true;}else if (_year y._year){if (_month y._month){return true;}else if (_month y._month){return _day y._day;}}return false;} private:int _year;int _month;int _day; };int main() {Date d1(2024, 1, 28);Date d2(2024, 1, 29);cout d1.operator (d2) endl;cout (d1 d2) endl;return 0; } 4. 运算符重载参数 上述我们的代码明明是对两个日期进行比较为何只有一个参数呢 运算符重载函数的参数取决于要重载的运算符的操作数个数和类型。 一元运算符重载一元运算符只有一个操作数。在重载一元运算符时通常将其定义为类的成员函数没有参数除了隐式的this指针。 二元运算符重载二元运算符有两个操作数。在重载二元运算符时可以选择将其定义为类的成员函数或非成员函数。 如果将二元运算符定义为类的成员函数参数列表将包括一个额外的参数表示右侧操作数。左侧操作数则是隐式的this指针。 如果将二元运算符定义为非成员函数全局函数或友元函数参数列表将包括两个参数分别表示左侧和右侧操作数。 5. 全局运算符重载函数 我们依旧对比两个日期是否相等判断大小注意与上述代码的参数差异。 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; };//operator运算符 做函数名 bool operator (const Date x, const Date y) {return x._year y._year x._month y._month x._day y._day; }bool operator (const Date x, const Date y) {if (x._year y._year){return true;}else if (x._year y._year){if (x._month y._month){return true;}else if (x._month y._month){return x._day y._day;}}return false; } int main() {Date d1(2024, 1, 28);Date d2(2024, 1, 29);cout operator (d1, d2) endl;cout operator (d1, d2) endl;cout (d1 d2) endl;cout (d1 d2) endl;return 0; } 6. 赋值运算符重载 6.1 语法及概念 赋值运算符重载是一种特殊的运算符重载用于在自定义的类中重载运算符使其能够对类对象进行正确的赋值操作。 赋值运算符重载的语法如下 class ClassName { public:ClassName operator(const ClassName other) {// 执行赋值操作的代码return *this;} };在赋值运算符重载函数中通常需要执行以下操作 检查是否是自我赋值即当前对象和要赋值的对象是否是同一个对象。如果是同一个对象则直接返回当前对象避免不必要的操作。 进行属性的深拷贝将要赋值的对象的属性逐个复制给当前对象的属性。 返回当前对象的引用。 6.2 示例 class Date { public:Date(int year 1900, int month 1, int day 1){_year year;_month month;_day day;}void Print(){cout _year / _month / _day endl;}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; };int main() {Date d1(2024, 2, 01);Date d2(2024, 2, 02);Date d3(2024, 2, 03);d1 d2 d3;d1.Print();d2.Print();d3.Print();return 0; } 6.3 为何使用引用 引用参数赋值运算符需要修改当前对象的值而不是创建一个新的对象。因此使用引用参数可以直接修改当前对象而不是在函数内部创建一个副本。 返回this指针赋值运算符一般返回当前对象的引用即*this。这样可以实现连续赋值操作例如 a b c。通过返回this指针可以链式调用赋值运算符。
http://www.zqtcl.cn/news/501398/

相关文章:

  • 母婴网站模板在线设计网站海报
  • 网站关键词优化公司哪家好如何跟客户沟通网站建设
  • 山西省经济建设投资公司网站滁州网站建设
  • 优秀设计网站哈尔滨vi设计公司
  • 如何建购物网站论坛类的网站怎样做
  • 河南省建设工程招投标协会网站安卓开发软件工具
  • 中国空间站wordpress无法选择服务器配置
  • 郑州家居网站建设服务公司asp网站助手
  • 做网站一般几个人WordPress 中英文翻译
  • 有没有兼职做网站的化工企业建网站
  • 石家庄展厅设计公司黑帽seo怎么做网站排名
  • 网站开发维护成本计算wordpress 无法访问
  • 永久免费做网站营销软文广告
  • 网站规划怎么写wordpress如何搭建博客
  • 网站索引页面网站做302重定向会怎么样
  • 精品成品冈站源码免费企业网站的内容模块
  • 网站策划的最终体现南宁网站建设培训学校
  • 网站不备案打不开怎么建网站不用买空间
  • 有没有IT做兼职的网站百度收录入口提交
  • 普洱市建设局网站重庆工程建设信息查询
  • 上海网站设计多少钱wap网站生成微信小程序
  • 广州网站到首页排名做图骂人的图片网站
  • 公司的网站建设价格wordpress付费阅读文章功能
  • 飞鸽网站建设建设网站什么软件比较好
  • 网站名称 规则网站seo完整seo优化方案
  • 昆明网站建设高端定制wordpress建站课程
  • 建网站外包wordpress 便利贴
  • 硅胶 技术支持 东莞网站建设网站互联网接入商
  • 太平洋建设21局网站微信网页版登录手机版
  • 站长统计芭乐鸭脖小猪电商平台哪个最好