C++ 重载关系操作符
#include <iostream>
using namespace std;
#include<vector>
//定义一个类,用于存放数据
class Test
{
int a;
public:
Test(int x) :a(x){} void print_id()
{
cout << a << endl;
}
void ttt()
{
cout << << endl;
}
void sss()
{
cout << "ssss"<<endl;
}
int GetA()
{
return this->a;
} };
//定义一个智能指针类,用于托管Test类的指针
class smartpoint
{
Test* p;
public: smartpoint(Test* x)
{
p = new Test(x->GetA());
}
~smartpoint()
{
if (p != NULL)
{
delete p;
p = NULL;
cout << "析构了" << endl;
}
} Test* operator->() //重载->运算符,并使用->运算符可以调用返回值的成员函数
{
return this->p;
}
Test& operator*() //重载* 运算符,并使用*运算符获得成员,并通过解引用来调用返回地址所在的对象中的成员,
{
//因为成员是指针类型,重载函数的返回值类型为引用,在获取this指针时要解引用返回对象,而不是返回地址,
return *this->p;
} }; //重载括号操作符
class Temp_01
{ public:
int operator ()(int x,int y)
{
return x + y;
}
}; class AA
{
public:
AA(){ a = ; };
AA(int x) :a(x){} AA operator + (const AA& other) //重载算术操作符 + - * / %同理
{
AA temp;
temp.a = this->a + other.a;
return temp;
}
bool operator ==(const AA& other) //重载关系操作符,> < <= >=同理
{
if (this->a == other.a)
return true;
else
return false;
}
operator double() //重载类型操作符
{
return (double)(this->a);
} AA& operator<<(int num) //重载输出操作符
{
cout << num << endl;
return *this;
}
AA& operator>>(int& num) //重载输出操作符 传入变量的地址,并由cin输入并返回
{
cin >> num;
return *this;
}
private:
int a;
}; //重载元素操作符
class temp
{
public:
temp(const char* m_buf)
{
buf = new char[strlen(m_buf) + ];
strcpy(this->buf, m_buf);
}
//重载元素操作符
char& operator [] (int num)
{
return buf[num];
}
~temp()
{
if (buf != NULL)
{
delete buf;
buf = NULL;
}
}
private:
char* buf;
}; int main()
{
AA a();
AA b();
//算术操作符使用示例
AA c = a + b; //关系重载操作符使用示例,
if (a == b)
{
cout << "相同" << endl;
}
else
{
cout << "不相同" << endl;
}
//类型重载操作符使用示例
double reslut = (double)c; //调用类型操作符,并将变量类型转换 //元素操作符操作示例
temp temp1("helloworld");
temp1[] = 'R'; //调用元素操作符重载,并修改指定位置的元素
//重载元素操作符
int num_1; //重载输入输出操作符
c >> num_1; //调用输入重载操作符
c << num_1; //调用输出重载操作符 //重载括号()运算符
Temp_01 temp11;
int s =temp11(, ); smartpoint sp(new Test());
//使用重载->操作符
sp->print_id();
sp->sss();
sp->ttt();
//使用重载*操作符
(*sp).print_id();
(*sp).sss();
(*sp).ttt();
return ;
}
C++ 重载关系操作符的更多相关文章
- 关于如何来构造一个String类
今天帮着一位大二的学弟写了一个String的类,后来一想这个技术点,也许不是什么难点,但是还是简单的记录一些吧! 为那些还在路上爬行的行者,剖析一些基本的实现..... 内容写的过于简单,没有涉及到其 ...
- Android指针管理:RefBase,SP,WP
Android中通过引用计数来实现智能指针,并且实现有强指针与弱指针.由对象本身来提供引用计数器,但是对象不会去维护引用计数器的值,而是由智能指针来管理. 要达到所有对象都可用引用计数器实现智能指针管 ...
- C++ 重载操作符与转换
<C++ Primer 4th>读书笔记 重载操作符是具有特殊名称的函数:保留字 operator 后接需定义的操作符号. Sales_item operator+(const Sales ...
- C++学习笔记15:操作符重载的函数原型列表(推荐)
//普通四则运算 friend A operator +(const A & lhs, const A & rhs); friend A operator -(const A & ...
- C++一些注意点之操作符重载
重载操作符需要注意 (1)重载操作符必须具有一个类类型操作数.不能重载内建类型的操作符. operator +(int,int);//这个是错误的,都为内建类型 operator +(int,clas ...
- 多关键字排序(里面有关于操作符(<<运算符 和 >>运算符 )的重载)
一种排序 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现在有很多长方形,每一个长方形都有一个编号,这个编号可以重复:还知道这个长方形的宽和长,编号.长.宽都是整数:现 ...
- C++学习笔记9-运算符重载
1. 重载运营商必须有一个类类型的操作数 对于内置类型运营商.它的意义不能改变. 例如,内置整数加法运算不能被重新定义: // error: cannotredefine built-in opera ...
- C++ Primer 学习笔记_63_重载运算符和转换 --转换和类类型【上】
重载运算符和转换 --转换与类类型[上] 引言: 在前面我们提到过:能够用一个实參调用的位 unsignedchar 相同范围的值,即:0到255. 这个类能够捕获下溢和上溢错误,因此使用起来比内置u ...
- 《C++ Primer》之重载操作符与转换(下)
转换与类类型 可用一个实参调用的非 explicit 构造函数定义一个隐式转换.当提供了实参类型的对象而需要一个类类型的对象时,编译器将使用该转换.这种构造函数定义了到类类型的转换.除了定义到类类型的 ...
随机推荐
- HDU-2138-How many prime numbers(Miller-Rabin新解法)
题目传送门 sol1:普通判到sqrt(n)的素数判定,不多说了. 素数判定 #include "bits/stdc++.h" using namespace std; bool ...
- OpenCVSharp对图像进行颜色分割
使用OpencvSharp的InRange函数对图像进行RGB颜色的分割. using System; using OpenCvSharp; using OpenCvSharp.Extensions; ...
- mysql数据库常用命令入门
查询所有数据库 show databases; 创建数据库 create database mytest001 default character set utf8; 查看数据库的默认字符集 show ...
- php--小数点问题
1.用round去小数点后两位时,有时候会出现很长的小数解决方法 sprintf("%.2f",round($total_fee,2)); 使用sprintf再截取一遍.出现变态小 ...
- 地理位置(Geolocation)API 简介
一.开篇简述 Geolocation API(地理位置应用程序接口)提供了一个可以准确知道浏览器用户当前位置的方法.且目前看来浏览器的支持情况还算不错(因为新版本的IE支持了该API),这使得在不久之 ...
- GYOJ_1812_股票(stock)
题目描述 2130年,股神巴菲特投胎了!他投胎到你身上! 你作为股神转世,能力比原股神还要强,你可以预测到今后n天的股价.假设刚开始你的手上有1元钱,你想知道n天后你最多可以赚到多少钱.作为股神转世, ...
- HTTP接口抓包工具之Fiddler
Fiddler的基本功能介绍: Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据,Fiddler包含了 ...
- Jmeter之Beanshell---使用Java处理JSON块
原文出处:https://www.cnblogs.com/xpp142857/p/7374281.html [环境] ①Jmeter版本:3.1,JDK:1.7 ②前置条件:将json.jar包置于. ...
- Android studio常用快捷键与设置
1.格式化代码: 命令 快捷键 将代码合并成一行 Ctrl + Shift + J 格式化 Ctrl+Alt+L 2.API函数参数提示:双击选中所要提示的函数,再按F2即可显示函数的使用方法. 3. ...
- 会编程的 AI + 会修 Bug 的 AI,等于什么 ?
2017-02-25 Python开发者 (点击上方公众号,可快速关注) 关于人工智能未来的畅想,除了家庭服务机器人,快递无人机,医用机器人等等,Lucas Carlson 认为人工智能在另外一个领域 ...