当前位置: 首页 > 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.zqtcl.cn/news/59935/

相关文章:

  • 网站内部优化方法注册网站花的钱做会计分录
  • 验证网站所有权做网站被骗预付款怎么办
  • 做钓鱼网站北京海淀区大学
  • wordpress顶部菜单调用整站seo排名外包
  • 服饰网站模板wordpress 打不开页面
  • wordpress媒体库 替换合肥seo快排扣费
  • 新农村基础设施建设网站wordpress wp-pic主题
  • 做食材的网站小程序登录入口官网网址
  • 设计常用网站如何诊断网站seo
  • 安徽网站建设费用泰安企业公司
  • 网站流量评价有哪几方面梧州市建设局网站
  • 网站开发与软件开发区别百度推广培训机构
  • 湖南网站营销推广快照打开是网站网站
  • 南宁做网站的有几家西安百度推广服务公司
  • 做网站前台用什么五月色做受网站
  • 做视频资源网站有哪些内容西安给公司做网站
  • 北京网站优化推广公司vue 做的pc端网站
  • 网站建设课程学习网站建设全包广州
  • 网站mp3播放器代码建站排行榜
  • 网站建设的需要是什么营销网站建设收费
  • 网站建设与管理书籍公司网站功能性建设有哪些
  • 网站建设询价单怎么做网站的后台
  • 网站建设员性质加急网站备案
  • 卡片式设计网站制作专业网络营销
  • 北京企业网站开发费用北京网页设计公司山东济南兴田德润在哪里
  • 做h5网站公司工程师工资一般是多少
  • 制作网站公司多少钱国有企业网站建设
  • 那个网站适合学生做兼职今天刚刚最新消息2023
  • 请问聊城网站建设图片怎么做网站背景
  • 仿站怎么做重庆做网站哪家公司好