iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++中递增运算符重载如何实现
  • 524
分享到

C++中递增运算符重载如何实现

2023-07-02 08:07:30 524人浏览 安东尼
摘要

这篇文章主要介绍“c++中递增运算符重载如何实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++中递增运算符重载如何实现”文章能帮助大家解决问题。递增运算符形如"a++"、&

这篇文章主要介绍“c++中递增运算符重载如何实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++中递增运算符重载如何实现”文章能帮助大家解决问题。

递增运算符

形如"a++"、"++a"。如果a初始值为1,那么"a++"结果为1,但是实际上a等于2,先读取再加1;"++a"结果为2,实际也是2。这是对于基本运算类型,那么递增运算符重载的目的就是对于对象的属性也可以直接进行前置递增和后置递增。

由于成员函数里重载写的内容少,就详细分析成员函数实现递增运算符重载

递增运算符重载的实现

类结构如下:

class Addoperator{private:    int _Num;public:    Addoperator(int m)    {        _Num = m;    }};

我的目的是直接输出类对象属性 "A++",即cout<<A++<<endl;那么就需要先对左移运算符重载

左移运算符重载

示例:

//先对左移运算符重载ostream& operator<<(ostream& cout, Addoperator A){    cout << A._Num;    return cout;}//需要在类第一行加上友元friend ostream& operator<<(ostream& cout, Addoperator A);

左移运算符重载在上篇博客以及详细介绍了,不理解的朋友可以去翻阅一下;由于_Num是私有属性 ,所以要在类内加上重载左移运算符函数是类友元的声明。

前置递增运算符重载

示例:

Addoperator& operator++()    {        _Num++;        return *this;    }

函数名还是采取编译器提供的规范名operator++ ,返回值类型为类引用,这是链式调用的形式,这样可以实现多次的前置递增运算,例如:"++(++A)";由于是在成员函数,这里不需要参数直接进行属性的递增;返回值是*this,前面讲到过this是指向成员属性的指针,this可以调用对象的属性,那么*this就是对象本身,通过返回其引用可以链式调用重载的前置递增运算符,示例:

void test01(){    Addoperator A(1);    cout <<++(++(++A)) << endl;    cout << A << endl;}

运行效果:

C++中递增运算符重载如何实现

注意事项1a

采用成员函数方法实现前置递增运算符重载不需要参数

通过返回对象的引用可以链式调用,非常方便

后置递增运算符重载

示例:

Addoperator operator++(int)    {        Addoperator temp = *this;        _Num++;        return temp;    }

函数名也采用编译器提供的标准递增运算符,但是参数这里加了个int,这是函数进阶里提到的占位参数,可以只写一个数据类型放这儿,可以进行函数重载;很明显前置和后置递增重载的函数名相同,肯定需要进行函数重载的,而编译器就默认加上占位参数后为后置递增运算;由于后置递增是先读数据后操作,那么我就先创建一个对象来记录当前_Num的属性,然后进行递增,最后返回记录的对象属性即可;

调用:

void test02(){    Addoperator B(0);    cout << B++<< endl;    cout << B++<< endl;    cout << B  << endl;}

运行效果: 

C++中递增运算符重载如何实现

注意事项b

虽然同时递增运算符重载,后置递增的运算却无法多次调用,不能链式调用,因为我们返回的引用是局部对象的引用,一旦返回,该对象地址就会被编译器清理,再调用的地址就会是新建的,因此这里最好不返回引用,直接返回值就行了,去掉"&"符号。

后置的递增运算符重载需要传入一个占位参数,用来进行函数重载;此外,函数重载和函数的返回值类型无关,就算去掉"&"也会进行函数重载。

关于“C++中递增运算符重载如何实现”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网其他教程频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: C++中递增运算符重载如何实现

本文链接: https://www.lsjlt.com/news/340564.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • c语言怎么计算字符串长度
    在C语言中,可以使用内置的strlen()函数来计算字符串的长度。该函数位于string.h头文件中。以下是一个示例代码: #inc...
    99+
    2024-05-15
    c语言
  • c语言怎么判断三个数的大小
    可以通过比较三个数之间的大小关系来判断它们的大小。以下是一个示例代码: #include <stdio.h> int ...
    99+
    2024-05-15
    c语言
  • c++排序函数sort怎么使用
    在C++中,使用sort函数对容器中的元素进行排序,可以按照默认的升序排列,也可以自定义排序规则。 下面是一个简单的例子,对一个ve...
    99+
    2024-05-15
    c++
  • c++中string的compare函数怎么使用
    在C++中,可以使用string的compare函数来比较两个string对象的大小。该函数的原型如下: int compare(c...
    99+
    2024-05-15
    c++
  • c++中string的compare函数有什么用
    c++中string的compare函数用于比较两个字符串的大小关系。该函数返回一个整数值,表示两个字符串的比较结果。 具体来说,如...
    99+
    2024-05-15
    c++
  • c++中print函数的功能有哪些
    在C++中,通常使用std::cout来进行输出操作,而不是使用print函数。std::cout是C++标准库中的一个输出流对象,...
    99+
    2024-05-15
    c++
  • c语言数据结构怎么使用
    在C语言中,数据结构可以通过定义结构体来实现。以下是一些常见的数据结构的使用方法示例: 链表: #include <std...
    99+
    2024-05-15
    c语言
  • c++中print函数的用法是什么
    在C++中没有内置的print函数,但可以使用cout来输出内容到控制台。cout是C++标准库中的一个输出流对象,可以使用<...
    99+
    2024-05-15
    c++
  • c++中concept的用法是什么
    在C++20中,Concept是一种新的语言特性,用于定义类型要求和约束。Concept可以被用来约束函数模板、类模板和普通函数的参...
    99+
    2024-05-15
    c++
  • c++中concept的作用是什么
    在C++中,concept的作用是定义一种通用的约束,用于限制模板参数的类型范围。通过使用concept,可以在编译时对模板参数进行...
    99+
    2024-05-15
    c++
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作