C++中的运算符重载函数基础及其值返回状态

2016-02-19 12:19 7 1 收藏

人生本是一个不断学习的过程,在这个过程中,图老师就是你们的好帮手,下面分享的C++中的运算符重载函数基础及其值返回状态懂设计的网友们快点来了解吧!

【 tulaoshi.com - 编程语言 】

       运算符重载是C++的重要组成部分,它可以让程序更加的简单易懂,简单的运算符使用可以使复杂函数的理解更直观。

对于普通对象来说我们很自然的会频繁使用算数运算符让他们参与计算,但是对于自定义类的对象来说,我们是无论如何也不能阻止写出像下面的代码一样的程序来的。

例子如下:

 C++ 代码 class Test 

    //过程省略 

 
int main() 

    Test a,c; 
    c=a+a; 
}



当然这样的代码是不能够通过编译的,c++对自定类的算术运算部分保留给了程序员,这也是符合c++灵活特性的。
在c++中要想实现这样的运算就必须自定义运算符重载函数,让它来完整具体工作。
在这里要提醒读者的是,自定义类的运算符重载函数也是函数,你重载的一切运算符不会因为是你自己定义的就改变其运算的优先级,自定义运算符的运算优先级同样遵循与内部运算符一样的顺序。
除此之外,c++也规定了一些运算符不能够自定义重载,例如.、::等等。 


上表是在C++中允许重载的运算符总表

下面我们来学习如何重载运算符,运算符重载函数的形式是:

返回类型 operator 运算符符号 (参数说明)
{
//函数体的内部实现
}

运算符重载函数的使用主要分为两种形式,一种是作为类的友元函数进行使用另一种则是作为类的成员函数进行使用

下面我们先看一下作为类的友元函数使用的例子:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)
 C++ 代码  
//程序作者:管宁     
//站点:www.cndev-lab.com     
//所有稿件均有版权,如要转载,请务必著名出处和作者    
 
#include iostream 
using namespace std; 
 
class Test 

    public: 
        Test(int a = 0) 
        { 
            Test::a = a; 
        } 
        friend Test operator +(Test&,Test&); 
        friend Test& operator ++(Test&); 
    public: 
        int a; 
}; 
Test operator +(Test& temp1,Test& temp2)//+运算符重载函数 

    //couttemp1.a"|"temp2.aendl;//在这里可以观察传递过来的引用对象的成员分量 
    Test result(temp1.a+temp2.a); 
    return result; 

Test& operator ++(Test& temp)//++运算符重载函数 

    temp.a++; 
    return temp; 

int main() 

    Test a(100); 
    Test c=a+a; 
    coutc.aendl; 
    c++; 
    coutc.aendl; 
    system("pause"); 
}



在例子中,我们对于自定义类Test来说,重载了加运算符与自动递增运算符,重载的运算符完成了同类型对象的加运算和递增运算过程。

重载运算符函数返回类型和形式参数也是根据需要量进行调整的,下面我们来看一下修改后的加运算符重载函数。

代码如下:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)
 C++ 代码  
//程序作者:管宁     
//站点:www.cndev-lab.com     
//所有稿件均有版权,如要转载,请务必著名出处和作者    
 
#include iostream 
using namespace std; 
 
class Test 

    public: 
        Test(int a = 0) 
        { 
            Test::a = a; 
        } 
        friend Test operator +(Test&,const int&); 
    public: 
        int a; 
}; 
Test operator +(Test& temp1,const int& temp2)//+运算符重载函数 

    Test result(temp1.a * temp2); 
    return result; 

int main() 

    Test a(100); 
    Test c = a + 10; 
    coutc.aendl; 
    syste

来源:http://www.tulaoshi.com/n/20160219/1600589.html

延伸阅读
  函数重载是用来描述同名函数具有相同或者相似功能,但数据类型或者是参数不同的函数治理操作的称呼。 !-- frame contents -- !-- /frame contents -- 我们来举一个实际应用中的例子来说明问题:我们要进行两种不同数据类型的和操作为了实现它,在c语言中我们就要写两个不同名称的涵数来进行区分例...
参与运算的两个值,如果两个相应位相同,则结果为0,否则为1。即:0^0=0, 1^0=1, 0^1=1, 1^1=0 例如:10100001^00010001=10110000 0^0=0,0^1=1 0异或任何数=任何数 1^0=1,1^1=0 1异或任何数-任何数取反 任何数异或自己=把自己置0 (1) 按位异或可以用来使某些特定的位翻转,如对数10100001的第2位和第3位翻转,可以将数与00000110...
标签: Web开发
JavaScript中new运算符是创建一个新对象。使用方法: new constructor[(arguments)] 其中constructor是必选项。对象的构造函数。如果构造函数没有参数,则可以省略圆括号。 arguments是可选项。任意传递给新对象构造函数的参数。 JavaScript中new运算符说明 new 运算符执行下面的任务: 创建一个没有成员的对象。 为那个对象调用构造函数...
标签: Web开发
typeof 运算符是 返回一个用来表示表达式的数据类型的字符串。 使用方法: typeof[()expression[]] ; 其中 expression 参数是需要查找类型信息的任意表达式。 JavaScript中typeof运算符说明 typeof 运算符把类型信息当作字符串返回。typeof 返回值有六种可能: "number," "string," "boolean," "object," "function," 和 "undefined." typ...
C#支持的位逻辑运算符如表2.9所示。运算符号意义运算对象类型运算结果类型对象数实例~位逻辑 非 运算整型,字符型整型1~a&位逻辑 与 运算2a & b|位逻辑 或 运算2a | b^位逻辑 异或 运算2a ^ b 位 左移 运算2a4 位 右移 运算2a2  1、 位逻辑非运算 位逻辑非运算是单目的,只有一个运算对象。位逻辑非运算按位对运算对象的值进行...

经验教程

767

收藏

18
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部