`
king_tt
  • 浏览: 2149099 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

C++重载operator的示例

 
阅读更多
以下示例中定义了一个class test, 重载了<, +, +=, =, ==, <<, >>等符号:

#include<iostream>
#include<vector>
using namespace std;

class test{
public:
     int v;
   /*构造函数*/
     test():v(0){}
     test(const int &a):v(a){}
     test(const test &t1):v(t1.v){} 
    
   /*以下重载小于号 < */
     //比较两个对象的大小 
     bool operator<(const test &t1) const{ 
         return (v < t1.v);
     }
     //比较对象和int的大小 
     bool operator<(const int &t1) const{ 
         return (v < t1);
     }
     //友元函数,比较int和对象的大小 
     friend inline bool operator<(const int &a, const test & t1){
         return (a < t1.v);
     }
    
   /*以下重载赋值号 = */
     //对象间赋值 
     test & operator=(const test &t1){
         v = t1.v;
         return *this;
     }
     //int赋值给对象 
     test & operator=(const int &t1){
         v = t1;
         return *this;
     }
    
   /*以下重载加号 + */
     //对象加上 int 
     test operator+(const int & a){
         test t1;
         t1.v = v + a;
         return t1;
     }
     //对象加对象 
     test operator+(test &t1){
         test t2;
         t2.v = v + t1.v;
         return t2;
     }
    
   /*以下重载加等号 += */  
     //对象加上对象 
     test &operator+=(const test &t1){
         v += t1.v;
         return *this;
     }  
     //对象加上int
     test &operator+=(const int &a){
         v += a;
         return *this;
     }

   /*以下重载双等号 == */  
     //对象==对象 
     bool operator==(const test &t1)const{
         return (v == t1.v);
     }  
     //对象==int
     bool operator==(const int &t1)const{
         return (v == t1);
     }  
    
   /*以下重载 输入>> 输出<< */
     /*友元函数,输出对象*/
     friend inline ostream & operator << (ostream & os, test &t1){
         cout << "class t(" << t1.v << ")" << endl;
         return os;
     }
     /*友元函数,输入对象*/
     friend inline istream & operator >> (istream & is, test &t1){
         cin >> t1.v;
         return is;
     }
};

int main(){
     test t0, t1(3);
     test t2(t1);
     cout << t0 << t1 << t2;
     cin >> t1;
     t2 = t1;
     t2 += t1;
     t1 += 10;
     cout << t2;
     if(t1 < t2) cout << "t1 < t2"; 
     else if(t1 == t2) cout << "t1 = t2";
     else /* t1 > t2*/ cout << "t1 > t2"; 
     cout <<endl;
     system("pause");
     return 0;
}


分享到:
评论

相关推荐

    C++ operator两种用法.docx

    C++中的operator有两种用法:operator overloading(操作符重载)和operator casting(操作隐式转换)。下面我们将分别介绍这两种用法。 一、operator overloading(操作符重载) operator overloading是C++中的一...

    P121~126C++类和对象C++运算符重载学习笔记.docx

    C++运算符重载学习笔记 C++类和对象是面向对象编程的基础概念。运算符重载是C++中的一种重要机制,允许开发者重新定义已有的运算符,赋予其新的功能,以适应不同的数据类型。在本文中,我们将详细介绍C++运算符重载...

    几个典型运算符重载(C++)(四).ppt

    几个典型运算符重载(C++) 本节主要讲述了C++中几个典型运算符的重载,包括前置和后置形式的++和--运算符的重载。 一、前置和后置形式的++和--运算符的重载 在C++中,可以对++和--运算符进行重载,以便在用户...

    面向对象程序设计语言C++---第5章-运算符重载.ppt

    C++运算符重载 面向对象程序设计语言C++中的运算符重载是指在用户定义类型上重新定义普通运算符的含义,以达到扩展语言的能力。运算符重载允许用户在不同的上下文中对已存在的预定义运算符进行重新解释。 1.运算符...

    几个典型运算符重载(C++)(四)ppt课件.ppt

    下面是一个简单的示例代码,演示如何重载++和--运算符: ```cpp class Increase { public: Increase() { value = 0; } void display() const { cout ; } Increase operator++() { value++; return *this; } ...

    c++中用运算符重载实现两数组相加.docx

    运算符+的重载函数CTwoArray &operator+(CTwoArray &b)用于将两个CTwoArray对象相加。该函数将两个数组元素逐个相加,并将结果存储在*this对象中。 在main函数中,我们创建了两个CTwoArray对象Array1和Array2,并...

    C++内存泄露检测代码

    operator new/delete重载的示例代码。 深度说明了C++类的构造函数、析构函数与operator new、delete之间的关系,相关文章:http://blog.csdn.net/kakaying/archive/2009/08/30/4498563.aspx

    有关c++训练的一些题目

    3. 重载运算符:C++允许用户重载运算符,以满足特定的需求。常见的运算符重载有输入输出运算符 和 &gt;&gt; 。 示例代码:friend ostream &operator (ostream &os, CStudent &stu); friend istream &operator &gt;&gt; (istream...

    C++ Primer第四版【中文高清扫描版】.pdf

    【原书名】 C++ Primer (4th Edition) 【原出版社】 Addison Wesley/Pearson 【作者】 (美)Stanley B.Lippman,Josée LaJoie,Barbara E.Moo 【译者】 李师贤 蒋爱军 梅晓勇 林瑛 【丛书名】 图灵计算机科学丛书 ...

    C++程序设计教程面向对象分册(郑秋生主编)第一章答案.pdf

    * 10.C:C++ 中的类可以使用 operator 运算符来重载运算符。 2. 阅读题答案: * 1.x=2,y=3:正确的赋值语句。 * 2.x=2,y=3 x!=y:正确的比较语句。 * 3.Cstatic::va1=0 cs1.vaI=1 cs2.val=2 cs1.val=4 cs2....

    C++学生信息管理系统实验报告-示例.docx

    (4)类中输入运算符重载函数operator &gt;&gt;():方便对类的对象输入 (5)类中输出运算符重载函数operator ():方便对类的对象输出 (6)获取函数getnum():方便在类外对类中的私有成员num的数据进行调用 (7)获取...

    C++ 智能指针

    auto_ptr 类模板的 operator* 是重载的,用于返回智能指针所指向的对象的值。operator* 的实现机制是直接返回智能指针所指向的对象的值。 auto_ptr 类模板的 operator-&gt; ----------------------------- auto_ptr ...

    开学了,有路网团购太便宜啦! C++编程惯用法(高级程序员常用方法和技巧)/深入C++系列(C++ Strategies and Tactics)

    9.5 传递参数给operator new 9.6 管理外部资源 9.7 寻找有关内存的bug 9.8 名字冲突 9.9 性能 9.10 不要去猜想,而应该度量! 9.11 算法 9.12 动态内存分配中的瓶颈 9.13 内嵌 9.14 Tiemann法则 9.15 小结 9.16 问题...

    C#中重载相等(==)运算符示例

    在 C++ 里面,运算符重载可以写在类的外面,当 intellisense 不工作的时候,找到一个运算符的重载函数是一件相当头疼的事情。这个问题在 C# 中改善了不少,因为运算符重载一定要写在类内,而且 intellisense 很强大...

    失物招领平台源码java-cpp-to-java-source-converter:将C++转换为Java的翻译器。正在进行中的工作

    重载 operator new 和 operator delete 内存管理 其他一切都应该与初始版本一起使用。 示例代码 以下几行指示使用指针生成的代码是什么样的。 // Test plain assignment... f[ 4 ] = 111 ; *f = 112 ; (((*(f + 2 ))...

    自己模拟写C++中的String类型实例讲解

    下面是模拟实现字符串的相关功能,它包括一下功能: String(const char * s);//利用字符串来初始化对象 String(); //默认构造函数 ...//重载=运算符。 String & operator=(const char *); char & operator[](in

    P213~214C++queue容器学习笔记.docx

    3. 赋值操作:`queue& operator=(const queue &que);`,重载等号操作符。 4. 数据存取: * `push(elem) ;`,往队尾添加元素。 * `pop() ;`,从队头移除第一个元素。 * `back() ;`,返回最后一个元素。 * `front...

    Lua语法进阶,Lua入门

    * 运算符重载示例:在以下示例中,我们定义了一个 Date 类,重载了 ++ 运算符,以实现日期的递增。 ```lua public class Date { public int year; public int month; public int day; public static Date ...

    Operator_overloading:编写一个类来实现复数在数学中的工作方式

    Operator_overloading 编写一个类来实现复数在数学中的工作方式。 复数可以表示为a + bi ,其中a和b是实数。 您没有获得完整的Complex类: class Complex { public: Complex ():real( 0 ), ima( 0 ){}; ~Complex ();...

    函数指针和函数对象

    函数对象的定义是使用重载的operator()运算符,例如`int operator()(int i)`。函数对象可以被作为函数指针使用,但函数对象更灵活和强大。 在示例代码中,我们定义了一个函数对象`Action`,它有两个成员函数`Drink`...

Global site tag (gtag.js) - Google Analytics