1.类中重载+操作符

#define  _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std; class Object
{
public:
Object()
{ } Object(int a)
{
num = a;
} Object operator + (const Object& a) //重载+操作符;
{
Object result;
result.num = num + a.num;
return result;
}
private:
int num;
}; int main(int argc, char * argv[])
{
int a = ;
int b = ; Object obja(a);
Object objb(b); Object objc = obja + objb; system("pause");
return ;
}

2.重载全局操作符

 

#define  _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std; class Object
{
friend Object operator + (const Object &a, const Object &b);
public:
Object()
{ } Object(int a)
{
num = a;
} private:
int num;
}; Object operator + (const Object &a, const Object &b)
{
Object result;
result.num = a.num + b.num;
return result;
} int main(int argc, char * argv[])
{
Object obja();
Object objb(); Object objc = obja + objb; system("pause");
return ;
}

全局操作符,主要注意的是,当重载操作符访问私有成员时,需要将操作符声明为友元;

4. 重载[] 操作符

#define  _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std; class Object
{
public:
Object()
{
} Object(char * str)
{
int size = strlen(str);
m_buf = new char[size];
strcpy(m_buf,str);
} char& operator [] (int index)
{
return m_buf[index];
} ~Object()
{
delete[] m_buf;
} private:
char *m_buf;
}; int main(int argc, char * argv[])
{
Object obja("weiyouqing"); char str = obja[];
obja[] = 'W'; system("pause");
return ;
}

5.重载==操作符

#define  _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std; class Object
{
public:
Object()
{
} Object(int a)
{
num = a;
} bool operator == (const Object &other)
{
if (num == other.num)
return true;
else
return false;
} ~Object()
{ } private:
int num;
}; int main(int argc, char * argv[])
{
Object obja();
Object objb();
if (obja == objb)
cout << "equal" << endl;
else
cout << "not equal" << endl; system("pause");
return ;
}

全局重载操作符:

#define  _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std; class Object
{
friend bool operator == (const Object &a, const Object &b);
public:
Object()
{
} Object(int a)
{
num = a;
} ~Object()
{ } private:
int num;
}; bool operator == (const Object &a,const Object &b)
{
if (a.num == b.num)
return true;
else
return false;
} int main(int argc, char * argv[])
{
Object obja();
Object objb();
if (obja == objb)
cout << "equal" << endl;
else
cout << "not equal" << endl; system("pause");
return ;
}

C++之重载操作符的更多相关文章

  1. 《精通C#》索引器与重载操作符(11.1-11.2)

    1.索引器方法结构大致为<modifier><return type> this [argument list],它可以在接口中定义: 在为接口声明索引器的时候,记住声明只是表 ...

  2. C++ 重载操作符与转换

    <C++ Primer 4th>读书笔记 重载操作符是具有特殊名称的函数:保留字 operator 后接需定义的操作符号. Sales_item operator+(const Sales ...

  3. 解释清楚c++的重载操作符【用自己的话,解释清楚】

    C++中对于内置的变量及标准库中常见的类定义类常见的操作符含义,对于自定义的类也可以通过关键字operate 重载操作符的含义. C++中支持重载的目的 诚然操作符的重载可以通过使用函数实现同样的功能 ...

  4. 重载操作符 operator overloading 学习笔记

    重载操作符,只是另外一种调用函数的方法和表现方式,在某些情况它可以让代码更简单易读.注意不要过度使用重载操作符,除非它让你的类更简单,让你的代码更易读. 1语法 如下: 其中友元,关键字不是必须的,但 ...

  5. [019]转--C++ operator关键字(重载操作符)

    原博客:http://www.cnblogs.com/speedmancs/archive/2011/06/09/2076873.html operator是C++的关键字,它和运算符一起使用,表示一 ...

  6. VC6.0中重载操作符函数无法访问类的私有成员

    整理日: 2015年03月18日 在 C++ 中,操作符(运算符)可以被重载以改写其实际操作.同时我们可以定义一个函数为类的朋友函数(friend function)以便使得这个函数能够访问类的私有成 ...

  7. C++高精度运算类bign (重载操作符)

    大数据操作,有例如以下问题: 计算:456789135612326542132123+14875231656511323132 456789135612326542132123*14875231656 ...

  8. C++ operator关键字(重载操作符)(转)

    operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名. 这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要使运算 ...

  9. C++中operator关键字(重载操作符)

    operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名. 这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要使运算 ...

  10. C++ Primer 学习笔记_60_重载操作符与转换 --赋值、下标、成员訪问操作符

    重载操作符与转换 --赋值.下标.成员訪问操作符 一.赋值操作符 类赋值操作符接受类类型形參,通常该形參是对类类型的const引用,但也能够是类类型或对类类型的非const引用.假设未定义这个操作符, ...

随机推荐

  1. bzoj1040 内向树DP

    2013-11-17 08:52 原题传送门http://www.lydsy.com/JudgeOnline/problem.php?id=1040 N个骑士,每个人有一个仇人,那么,每个骑士只有一个 ...

  2. Python爬虫学习 - day2 - 站点登陆

    利用Python完成简单的站点登陆 最近学习到了爬虫,瞬时觉得很高大上,想取什么就取什么,感觉要上天.这里分享一个简单的登陆抽屉新热榜的教程(因为它不需要验证码,目前还没有学会图像识别.哈哈),供大家 ...

  3. Quorum一致性协议

    Quorum一致性协议 一个分布式数据库系统中通常是一系列密切关联的操作组成完整的系统. 分布式系统最基本的要保证一致性, 分区性通常是无法避免的, 在这种情况下尽力通过软件协议做到最大可用性. 根据 ...

  4. 对象存储 - Swift 原理 及 Swift+keystone+dashboard 架构搭建

    1. 原理介绍 Swift 架构.原理及功能: http://www.cnblogs.com/sammyliu/p/4955241.html 总结的很详细也很全面,受益匪浅,感谢分享. 2. keys ...

  5. 【SQL】单个表的查询

    看到一本好书:名字叫做<数据库系统基础教程> 第三版 岳丽华等译 讲得很清楚,也不啰嗦. 这里是书中第六章的部分笔记: 一.常见用法:  1. AS 定义别名 可省略 2. 可以用加减乘除 ...

  6. OOM异常 Java内存溢出

    1.OutOfMemoryError 抛出异常后先确定是堆溢出还是栈溢出 堆溢出:java.lang.OutOfMemoryError: Java heap space 堆出现OOM(标志就是Java ...

  7. 前段基础JavaScript

    JavaScript概述 JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase.( ...

  8. AC日记——[NOIP2015]运输计划 cogs 2109

    [NOIP2015] 运输计划 思路: 树剖+二分: 代码: #include <cstdio> #include <cstring> #include <iostrea ...

  9. Jquery学习之路(三) 实现弹出层插件

    弹出层的应用还是比较多的,登陆,一些同页面的操作,别人的总归是别人的,自己的才是自己的,所以一直以来想写个弹出层插件.不多废话,直接开始吧! 不想看可以在这里直接下载源码xsPop.zip 1:遮罩层 ...

  10. centos6.5 卸载adobeflash

    # rpm -e flash-plugin # rpm -qa | grep ^flash-plugin