C++之重载操作符
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++之重载操作符的更多相关文章
- 《精通C#》索引器与重载操作符(11.1-11.2)
1.索引器方法结构大致为<modifier><return type> this [argument list],它可以在接口中定义: 在为接口声明索引器的时候,记住声明只是表 ...
- C++ 重载操作符与转换
<C++ Primer 4th>读书笔记 重载操作符是具有特殊名称的函数:保留字 operator 后接需定义的操作符号. Sales_item operator+(const Sales ...
- 解释清楚c++的重载操作符【用自己的话,解释清楚】
C++中对于内置的变量及标准库中常见的类定义类常见的操作符含义,对于自定义的类也可以通过关键字operate 重载操作符的含义. C++中支持重载的目的 诚然操作符的重载可以通过使用函数实现同样的功能 ...
- 重载操作符 operator overloading 学习笔记
重载操作符,只是另外一种调用函数的方法和表现方式,在某些情况它可以让代码更简单易读.注意不要过度使用重载操作符,除非它让你的类更简单,让你的代码更易读. 1语法 如下: 其中友元,关键字不是必须的,但 ...
- [019]转--C++ operator关键字(重载操作符)
原博客:http://www.cnblogs.com/speedmancs/archive/2011/06/09/2076873.html operator是C++的关键字,它和运算符一起使用,表示一 ...
- VC6.0中重载操作符函数无法访问类的私有成员
整理日: 2015年03月18日 在 C++ 中,操作符(运算符)可以被重载以改写其实际操作.同时我们可以定义一个函数为类的朋友函数(friend function)以便使得这个函数能够访问类的私有成 ...
- C++高精度运算类bign (重载操作符)
大数据操作,有例如以下问题: 计算:456789135612326542132123+14875231656511323132 456789135612326542132123*14875231656 ...
- C++ operator关键字(重载操作符)(转)
operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名. 这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要使运算 ...
- C++中operator关键字(重载操作符)
operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名. 这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要使运算 ...
- C++ Primer 学习笔记_60_重载操作符与转换 --赋值、下标、成员訪问操作符
重载操作符与转换 --赋值.下标.成员訪问操作符 一.赋值操作符 类赋值操作符接受类类型形參,通常该形參是对类类型的const引用,但也能够是类类型或对类类型的非const引用.假设未定义这个操作符, ...
随机推荐
- bzoj 1901 线段树套平衡树+二分答案查询
我们就建一颗线段树,线段树的每一个节点都是一颗平衡树,对于每个询问来说,我们就二分答案, 查询每个二分到的mid在这个区间里的rank,然后就行了 /************************* ...
- React事件处理程序
function ActionLink() { function handleClick(e) { e.preventDefault(); console.log('The link was clic ...
- Git常用命令总结【转】
转自:http://www.cnblogs.com/mengdd/p/4153773.html 查看.添加.提交.删除.找回,重置修改文件 git help <command> # 显示c ...
- arm处理器中a5 a8 a9,v6 v7,arm7 arm9 arm11都是依据什么来分类的【转】
转自:http://blog.csdn.net/maochengtao/article/details/9951131ARM处理器发展这么多年,有很多架构,很多不同的内核 架构有armv1 v2 v3 ...
- C++ Primer 阅读笔记:迭代器和容器 小结
原创 by zoe.zhang 0.写在前面的话 我是在2011年学的C++,但是那一年恰好是C++11新标准的一年,但是大学上学的C++还是基于C++98的风格的,使用的编译器也是VC6.0,啊, ...
- Spring+Junit,测试事务时,一直回滚
研究了好长时间,都不知道原因,也不能解决. 控制台又没有报异常,但是就是一直回滚.注释掉spring声明式配置的代码,就能正确的更新数据. 从网上看了,别人的文章 http://blog.csdn.n ...
- 7.Redis键值对数据库
1.Redis的安装以及客户端连接 安装:apt-get install redis-server 卸载:apt-get purge --auto-remove redis-server 启动:red ...
- 【 Keepalived 】Nginx or Http 主-备模式
一.主-备模式: 操作系统:centos 6.4 x64 ka1: 192.168.2.10 ka2: 192.168.2.11 vip: 192.168.2.200 ka1-master服务器配置 ...
- python 金字塔图形
a = 50 y = '*'*(a+1) p = ' ' while a: print(y) y = y[:a-1] y = p + y a = a - 1 for i in range(20): p ...
- Selenium2+python自动化37-爬页面源码(page_source)【转载】
前言 有时候通过元素的属性的查找页面上的某个元素,可能不太好找,这时候可以从源码中爬出想要的信息.selenium的page_source方法可以获取到页面源码. selenium的page_sour ...