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

各地残疾人联合会网站建设网上教育培训机构

各地残疾人联合会网站建设,网上教育培训机构,建一个商城网站多少钱,页面模板只有注册的人可以弄吗类和对象③ 介绍运算符重载赋值运算符重载运算符重载 在学习C语言时#xff0c;我们首先接触的就是变量#xff0c;再深入学习#xff0c;我们可以利用运算符对变量进行操作#xff0c;当我们使用C编写程序时#xff0c;经常会遇到一些需要对特殊的例如自定义数据类型进行… 类和对象③ 介绍运算符重载赋值运算符重载运算符重载 在学习C语言时我们首先接触的就是变量再深入学习我们可以利用运算符对变量进行操作当我们使用C编写程序时经常会遇到一些需要对特殊的例如自定义数据类型进行特殊操作的情况。为此C提供了运算符重载的机制可以通过重新定义运算符的行为实现对自定义数据类型的运算进行特殊定义和处理。在本文中我们将探讨运算符重载的概念、语法以及一些实际应用。 运算符重载是指通过重新定义运算符的行为使其适用于自定义数据类型。换句话说我们可以通过重载运算符来定义两个对象之间的操作使其具有更直观且符合实际需求的行为。 C中支持对大部分运算符进行重载包括算术运算符、比较运算符、位运算符如 、|、^等等。通过运算符重载我们可以扩展这些运算符的用法使其适用于我们自定义的数据类型 介绍运算符重载 运算符重载是具有特殊函数名的函数也具有其返回值类型函数名字以及参数列表其返回值类型与参数列表与普通的函数类似。 所以运算符重载是通过函数重载的方式来实现的其中函数名为运算符的符号。运算符重载函数可以是类的成员函数或友元函数。下面是运算符重载函数的一般形式 返回值类型 operator运算符 (参数列表) {// 运算符的实现 }在运算符重载函数中参数列表指定了参与运算的操作数。返回值类型通常为该类类型的引用或对象以支持连续运算。 需要注意的是不是所有的运算符都可以被重载.* :: sizeof ?: . 注意以上5个运算符不能重载。而且在重载运算符时也需要遵循一些规则和约束条件。例如运算符的优先级和结合性不能改变某些运算符如赋值运算符应该返回左操作数的引用等等。 赋值运算符重载 赋值运算符是C中最常用的运算符之一它用于将一个对象的值赋给另一个对象。在C中我们可以通过重载赋值运算符来定义自定义数据类型的赋值操作使其适用于我们自己定义的数据类型。 我们已经知道了运算符重载的格式看代码示例: class MyClass { public:MyClass operator(const MyClass other){// 赋值操作的实现return *this;} };在上面的代码中我们定义了一个MyClass类并重载了赋值运算符。注意到返回的是一个 指向当前对象的引用即*this这是为了支持连续赋值操作。在重载函数中我们接收一个指向另一个MyClass对象的引用并将其值赋给当前对象。最后返回一个指向当前对象的引用。 赋值运算符即是用于对象之间的赋值操作。它的重载允许我们定义自定义对象之间的赋值行为。在C中赋值运算符可以重载为类的成员函数但不能重载为全局函数。 这是因为赋值运算符需要访问对象的私有成员变量以便完成赋值操作。而成员函数具有隐含的this指针可以直接访问对象的成员变量。因此将赋值运算符重载为成员函数更加自然和方便。 另一方面全局函数无法直接访问类的私有成员变量。如果将赋值运算符重载为全局函数那么它将无法直接访问类的私有成员变量从而无法完成赋值操作。为了能够访问类的私有成员变量我们需要使用友元函数或者友元类来实现。但是这样做会破坏封装性并且增加了复杂性。 综上所述将赋值运算符重载为类的成员函数更加合理和方便因为它可以直接访问类的私有成员变量而全局函数无法直接访问类的私有成员变量。 赋值运算符如果不显式实现编译器会生成一个默认的。此时用户再在类外自己实现一个全局的赋值运算符重载就和编译器在类中生成的默认赋值运算符重载冲突了故赋值运算符重载只能是类的成员函数。 运算符重载 重载运算符有两种形式前置递增和后置递增。 1. 前置运算符重载 // 前置递增运算符重载 ClassName operator() {// 实现前置递增操作// 返回递增后的对象本身return *this; }在前置递增运算符重载中操作符函数不需要任何参数。它直接对被操作对象进行递增操作并返回递增后的对象本身。例如可以通过以下方式使用前置递增运算符重载 ClassName obj; obj; // 调用前置递增运算符重载函数2. 后置运算符重载 // 后置递增运算符重载 ClassName operator(int) {// 创建一个副本用于保存递增前的对象状态ClassName temp *this;// 实现递增操作// 更新当前对象的状态// 返回递增前的对象副本return temp; }在后置递增运算符重载中操作符函数需要一个额外的int参数虽然该参数不会被实际使用。它首先创建一个副本用于保存递增前的对象状态然后对当前对象进行递增操作并返回递增前的对象副本。但是在调用函数时该参数不用传递编译器自动传递 例如可以通过以下方式使用后置递增运算符重载 ClassName obj; obj; // 调用后置递增运算符重载函数
http://www.pierceye.com/news/59935/

相关文章:

  • 官方网站怎么找深圳市年检在哪个网站做
  • 专业网站建设找哪家网站开发怎么收客户费
  • 西安做视频网站公司志勋网站建设公司
  • 昆明企业网站的建设东莞网站优化案例
  • 网站公众平台建设方案嘉兴自助模板建站
  • 四川网站建设外包php技术的网站开发
  • 修改网站默认首页购物平台最新排名
  • 网站建设公司好做吗公众号外链网站怎么做
  • 防钓鱼网站宣传网址查询ip地址
  • 西安未央区做网站设计师图片素材网站有哪些
  • 青岛网站建设网址手机网站建立
  • 凡科网站建设好河南app定制
  • 上海网站推广企业wordpress源码系统下载
  • 响应式网站宽度app编辑软件
  • 邯郸之窗官网网站缓存优化怎么做
  • 谷歌网站站长指南dede网站 异步生成
  • 网站地图无法生成兰州网站建设方法
  • wordpress 分类合并网站上seo怎么做
  • 英语网站建设郑州网站建设msgg
  • 淄博网站建设公司有多少家有没有网站开发软件
  • 山东企业网站建设哪家好青岛开发区网站
  • 泉州有哪些做网站的为什么要先创建站点后建立文件?能否改变两者的顺序?
  • 优秀设计师网站qq刷赞网站推广全网
  • 广告网站怎么设计制作鄞州区网站建设
  • 教育网站改版方案wordpress表单收集
  • 做服务器的网站的模板vs网站开发 百度文库
  • 温州 网站建设佛山网站定制开发
  • 如何让网站收录榆林哪里做网站
  • 江门网站建设公司网站开发 商标注册
  • 湖北网站建设哪家专业建站宝盒建网站