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

做网站从什么做起南京有哪些做网站的公司

做网站从什么做起,南京有哪些做网站的公司,用个人电脑做网站服务器,黑龙江电商网站建设本文将使用计数器类作为案例&#xff0c;详细讲解如何通过转换函数和运算符函数让类的对象能够像内置类型一样直接使用。 现在我们有一个基础版本的计数器如下&#xff1a; 版本1&#xff1a;基础计数器类 #include <iostream>class Counter {unsigned cnt 0; public://…

本文将使用计数器类作为案例,详细讲解如何通过转换函数和运算符函数让类的对象能够像内置类型一样直接使用。
现在我们有一个基础版本的计数器如下:
版本1:基础计数器类

#include <iostream>class Counter {unsigned cnt = 0;
public:// 基础功能void increment() { if (cnt < UINT_MAX) cnt++; }void decrement() { if (cnt > 0) cnt--; }unsigned value() const { return cnt; }
};// 使用示例
void demo_v1() {Counter c;c.increment();c.decrement();std::cout << "计数器值: " << c.value() << "\n"; // 输出: 2
}

1. 转换函数详解

  • 什么是转换函数?
  • 转换函数允许类对象在需要特定类型时自动转换为该类型。

格式为:

operator target_type() const;

那么,在这个计数器类中,可以这样写:

operator unsigned() const { return cnt; }

也就是说,直接把基础版本中的构造函数中的这行代码进行了替换:

 unsigned value() const { return cnt; }

从而,在使用类的时候,每次都需要调用函数 increment,decrement:

 	Counter c;c.increment();c.decrement();

变为了直接使用 c本身:

	Counter c;std::cout << c; // 输出对象,自动转换为unsigned输出unsigned total = c + 5; // 参与运算,自动转换为unsigned后相加if (c > 10) { // 自动转换为unsigned后比较// 参与条件判断
}

2. 运算符函数详解

  • 什么是运算符函数?
  • 运算符函数允许类对象使用标准运算符(如++, --, !等)。

格式为:

return_type operator op (parameters);

那么,在这个计数器类中,如果想要替代函数 increment,及函数value的返回值,可以这样写:

// 前置递增
Counter& operator++() {
// 实现递增逻辑if (cnt < UINT_MAX) cnt++;// 返回自身的引用return *this;
}// 后置递增
Counter operator++(int) {Counter temp = *this;// 保存原始值++(*this);// 调用前置递增return temp;// 返回原始值
}

也就是替代了原函数中的这些语句,并且使得自增自减更加的精细了:

  void increment() { if (cnt < UINT_MAX) cnt++; }unsigned value() const { return cnt; }

同理,decreme函数也可以这样写。

那么升级后的计数器类是这样的:

版本2:支持直接调用的计数器类

#include <iostream>
#include <climits>class Counter {unsigned cnt = 0;
public:// 转换函数:Counter -> unsignedoperator unsigned() const { return cnt; }// 运算符函数:逻辑非bool operator!() const { return cnt == 0; }//在这里判断输入的cnt是否为0,如果为0,则不执行const函数。// 运算符函数:前置递增Counter& operator++() {if (cnt < UINT_MAX) cnt++;return *this;}// 运算符函数:后置递增Counter operator++(int) {Counter temp = *this;++(*this);return temp;}// 运算符函数:前置递减Counter& operator--() {if (cnt > 0) cnt--;return *this;}// 运算符函数:后置递减Counter operator--(int) {Counter temp = *this;--(*this);return temp;}
};// 使用示例
void demo_v2() {Counter c;// 直接使用递增运算符++c; // 前置递增c++; // 后置递增// 直接输出对象(调用转换函数)std::cout << "计数器值: " << c << "\n"; // 输出: 2// 直接参与运算(调用转换函数)unsigned total = c * 10;std::cout << "总数值: " << total << "\n"; // 输出: 20// 使用逻辑非运算符if (!c) {std::cout << "计数器为零\n";} else {std::cout << "计数器不为零\n"; // 输出此项}
}
http://www.dtcms.com/a/510224.html

相关文章:

  • 润滑油网站建设福州网站外包
  • 闲置tp路由自己做网站郑州专业seo推荐
  • 做网站设计的公司名字做网站用了别人公司的图片可以吗
  • 淄博网站建设程序广州冼村房价
  • 石家庄网站建设策略网站安全防护找谁做
  • 从哪里找网站怎么在.Net中做团购网站
  • 专业做二手健身器材的是什么网站家用电脑搭建服务器
  • 莱阳做网站的wordpress远程媒体库
  • 平台怎样推广长春seo公司长春网站设计
  • 北京网站建设公司网站优化资讯下载深圳app
  • 自己做免流网站wordpress加密某一页面
  • 网站建设哪个语言好百度提交网站收录入口
  • 霸州建网站做进口假体下巴的网站
  • 帮别人做非法网站中国教育建设协会网站
  • 个人网站备案时间一个新网站怎么做seo
  • 前几年做那些网站致富网页设计师培训班大连
  • ps做网站效果图都是按几倍做什么平台可以免费打广告
  • 查看网站外链郑州做网站找哪家
  • 小型教育网站建设问题存在的百度商家怎么入驻
  • 短信轰炸网站开发网络游戏未成年消费问题怎么处理
  • 网站建设数据处理建设网站需要什么技术支持
  • 国内设计大神网站wordpress中文网址无法打开
  • 网站怎么做才吸引人局域网内用自己电脑做网站
  • 2o18江苏建设网站施工员模试卷在库言库建筑网站
  • 景德镇网站网站建设网站建设 seo
  • 深圳网站建设 湖南岚鸿wordpress代码打包
  • 网站建设毕业设计模板宜兴网站开发
  • 杭州网站建设加q479185700网站服务器怎么更换
  • 影音先锋资源网站建设wordpress 无图插件
  • 西安做网站魔盒齐河县城乡建设局网站