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

贵州灵溪seo整站优化外贸跨境电商平台

贵州灵溪seo整站优化,外贸跨境电商平台,阿里云主机 搭建网站,wordpress淘宝联盟模板下载地址重载自增自减运算符 Intger num(2); num; num;对自增运算符的重载要区分前置和后置。在重载之前需要思考一个问题#xff0c;num是返回一个临时变量还是num对象的本体。 为了解决这个问题可以考虑实现一个Inc_()函数和_Inc()函数分别模仿后置和前置的行为 Integer Inc_(){i…重载自增自减运算符 Intger num(2); num; num;对自增运算符的重载要区分前置和后置。在重载之前需要思考一个问题num是返回一个临时变量还是num对象的本体。 为了解决这个问题可以考虑实现一个Inc_()函数和_Inc()函数分别模仿后置和前置的行为 Integer Inc_(){int tthis-_num;this-_num1; return Integer(t); } Integer _Inc(){this-_num;return *this; }分别调用这两个函数 Integer num(3); auto tnum.Inc_(); std::coutt.getValue();调用Inc()_输出结果如下 Integer num(3); auto tnum._Inc(); std::coutt.getValue();调用_Inc()输出结果如下 通过这个例子不难看出后置返回的是临时对象前置返回的是本体。 接下来就开始重载前置和后置 Integer operator(){//后置int tthis-_num;this-_num1;return Integer(t); } Integer operator(){//前置 this-_num;return *this; }但是如果这样写就会报错因为函数重载是通过参数列表进行区分的而不是通过返回值类型进行区分。 通常对于后置要使用站位参数 Integer operator(int){//后置int tthis-_num;this-_num1;return Integer(t); } 重载逻辑运算符和单目运算符 逻辑与 bool operator(const Integerright)const {return this-_numright._num; }std::coutstd::boolalpha(Integer(0)Integer(1));单目负 Integer operator -(){return Integer(-this-_num); }括号运算符 ()函数调用运算符 重载了这运算符对象就有了函数的行为(仿函数) class Program { public:void operator()(){//第一个括号是运算符std::couthello world;} }; Program p; p();//调用括号运算符重载括号运算符是可以有参数的 class Program { public:void operator()(int i){//第一个括号是运算符std::coutiihello world;} };说明 函数调用运算符只能用非静态成员函数重载函数调用运算符可以有任意个参数但不能有默认参数 []下标访问运算符 class String { private:int size;char*str; public:String(const char*str){sizestrlen(str);this-strnew char[size1]{0};strcpy(this-str,str);}int Size(){return size;} }; int main() {String strhello world;return 0; }假设现在要有这样的一个操作 //循环遍历str内部的字符串 for(int i0;istr.Size();i) {//to do }这个时候如何重载了下标访问运算符就可以通过str[i]遍历内部的字符串这样操作是不是就相当方便了 char operator[](int i){return str[i]; }说明 []是一个二元运算符具有数组名和下标两个参数数组名由编译器通过this指针隐式传递因此参数表中只需要提供一个参数。[]可以同时出现在赋值运算符左边和右边所以重载是常常返回引用因为返回引用的函数可以出现在的左边调用。只能用非静态成员函数重载 和指针有关的运算符 int main() {int*anew int[5];return 0; }上面的这个程序进行new操作后没有delete会造成内存泄漏但如果就是忘掉了delete呢这个可以通过自己实现一个类来解决这个问题。 class Auto_Ptr { public:Auto_Ptr(int*ptr):m_ptr(ptr){}~Auto_Ptr(){delete m_ptr;} private:int*m_ptr; };int*anew int[5]; Auto_Ptr pa(a);Auto_Ptr这个类帮我们完成了delete操作这样就不用担心new了之后忘记delete了。 那么如何让Auto_Ptr则个类更像指针那么就要重载一些运算符 class People { private:int age_;std::string name_; public:People(const std::string name,int age):name_(name),age_(age){}std::string name()const{return name_;} }; class Auto_Ptr { public:Auto_Ptr(People*ptr):m_ptr(ptr){}~Auto_Ptr(){delete m_ptr;}People *operator-(){return m_ptr;}People *operator(){return m_ptr;}People operator*(){return m_ptr[0];} private:People*m_ptr; };总结 目的为已有的运算符赋予新的含义以方便我们使用。实质函数重载的一种形式或者说是一种特殊的函数。规则 只能重载C中已经定义好的运算符。不能创建新的运算符。运算符重载后其优先级、结合性等保持不变。不能改变运算符的语法结构。 重载运算符的函数原型返回类型 operator 运算符 (参数列表)。重载运算符的参数可以有一个或多个参数。当运算符有多个参数时参数之间用逗号隔开。重载运算符的返回类型可以是任何数据类型包括基本数据类型和自定义类型。运算符重载的方法 前缀形式例如重载运算符时函数名为 operator()。后缀形式例如重载运算符时函数名为 operator(int)。注意这里的int是虚拟参数并不代表真实的类型。 注意事项 重载的运算符必须与用户使用的输入匹配。如果用户使用了不同的输入则不会调用该重载的运算符。应该小心使用复杂的运算符重载因为这可能导致程序的可读性和可维护性下降。如果发现自己在重载运算符时使用了过多的参数或者做出了过于复杂的操作那么可能需要重新考虑一下设计。在重载运算符时需要确保不会破坏原有运算符的语义和语法规则。例如你不能改变运算符的优先级或结合性。 在重载运算符时需要确保重载后的运算符能够与使用它的代码和谐共存。例如你不能让重载后的运算符破坏了原有代码的结构或者逻辑。 总的来说虽然运算符重载提供了很大的灵活性但是需要谨慎使用以避免引入不必要的复杂性。在重载运算符时应该尽量保持原有的语义和语法规则以确保代码的可读性和可维护性。
http://www.dnsts.com.cn/news/160169.html

相关文章:

  • 临沂网站wordpress移除头部无用
  • 网站建设客户资源成都网站优化公司
  • 郑州市建设工程信息网站wordpress 字体颜色插件
  • 做慕课的网站有哪些做百度网站需不需要备案
  • 宁波外贸公司网站建设河南热点新闻事件
  • linux 网站建设建立网站设计
  • 网站开发一般有几个服务器域名制作网站
  • 做插画的网站利川住房和城乡建设局网站
  • 网站开发在线打开word苏州建站公司哪个济南兴田德润实惠吗
  • php与mysql网站开发...建设机械网站制作
  • 爱站在线关键词挖掘wordpress响应式网站
  • 百度seo网站优化 网络服务wix做的网站能扒下来
  • 营销型网站建设与网页设计网站 科技感
  • 建设网站需要注意的事项洛阳万悦网站建设
  • 简述网站设计要遵循哪些原则网店设计的重要性
  • 潍坊住房与城市建设部网站如何建设一个好的企业网站
  • 温州网站推广排名哪里有做家教网站的
  • 西安网站开发huanxiwordpress代刷网
  • 个人博客网站开发历程佛山网站建设公司排名榜
  • 微网站建设网络做的不错的网站
  • 杭州市下城区建设局门户网站wordpress get_post_category_id
  • 合肥网站推广外包公司百度竞价代运营公司
  • 全国建设厅网站百度有做企业网站吗
  • 长沙网站开发推荐连锁酒店网站建设公司
  • 开发网站公司多少钱软件开发报价单范本
  • 双语教学示范课程建设项目网站濮阳网站关键词
  • 网站news怎么做天津做网站的公司
  • 一家只做直购的网站如何快速推广一个网站
  • c做网站做网站费用上海
  • 凡科建站网页版苏州建设信息网