#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++ 重载关系操作符的更多相关文章

  1. 关于如何来构造一个String类

    今天帮着一位大二的学弟写了一个String的类,后来一想这个技术点,也许不是什么难点,但是还是简单的记录一些吧! 为那些还在路上爬行的行者,剖析一些基本的实现..... 内容写的过于简单,没有涉及到其 ...

  2. Android指针管理:RefBase,SP,WP

    Android中通过引用计数来实现智能指针,并且实现有强指针与弱指针.由对象本身来提供引用计数器,但是对象不会去维护引用计数器的值,而是由智能指针来管理. 要达到所有对象都可用引用计数器实现智能指针管 ...

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

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

  4. C++学习笔记15:操作符重载的函数原型列表(推荐)

    //普通四则运算 friend A operator +(const A & lhs, const A & rhs); friend A operator -(const A & ...

  5. C++一些注意点之操作符重载

    重载操作符需要注意 (1)重载操作符必须具有一个类类型操作数.不能重载内建类型的操作符. operator +(int,int);//这个是错误的,都为内建类型 operator +(int,clas ...

  6. 多关键字排序(里面有关于操作符(<<运算符 和 >>运算符 )的重载)

    一种排序 时间限制:3000 ms | 内存限制:65535 KB 难度:3   描述 现在有很多长方形,每一个长方形都有一个编号,这个编号可以重复:还知道这个长方形的宽和长,编号.长.宽都是整数:现 ...

  7. C++学习笔记9-运算符重载

    1. 重载运营商必须有一个类类型的操作数 对于内置类型运营商.它的意义不能改变. 例如,内置整数加法运算不能被重新定义: // error: cannotredefine built-in opera ...

  8. C++ Primer 学习笔记_63_重载运算符和转换 --转换和类类型【上】

    重载运算符和转换 --转换与类类型[上] 引言: 在前面我们提到过:能够用一个实參调用的位 unsignedchar 相同范围的值,即:0到255. 这个类能够捕获下溢和上溢错误,因此使用起来比内置u ...

  9. 《C++ Primer》之重载操作符与转换(下)

    转换与类类型 可用一个实参调用的非 explicit 构造函数定义一个隐式转换.当提供了实参类型的对象而需要一个类类型的对象时,编译器将使用该转换.这种构造函数定义了到类类型的转换.除了定义到类类型的 ...

随机推荐

  1. C语言返回值

    C语言函数在结束的时候可以用一个数字表示运行的结果,这个数字就叫做函数的返回值. 主函数应该有一个返回值.如果这个返回值是0就表示程序希望计算机认为它正常结束,如果不是0就表示程序希望计算机认为它是出 ...

  2. python多进程之IPC机制以及生产者消费者模型

    1.进程间通信(IPC机制) 第一种:管道 import subprocessres=subprocess.Popen('dir',shell=True, stdout=subprocess.PIPE ...

  3. Serializable中的serialVersionUID是必须的吗

    不写serialVersionUID就没有吗 即使不写, jdk反序列化时也会自动检查这个id, 反编译.class文件你也看不到这个值 rpc反序列化 如果使用jdk的方式, 这个必须配置 如果使用 ...

  4. JFreeChart插件使用

    以java project为例,首先需要导入需要的jar包:jcommon-1.0.23.jar, jfreechart-1.0.19.jar. 画饼状图示例: package com.it.jfch ...

  5. Beautiful Soup的用法(五):select的使用

    原文地址:http://www.bugingcode.com/blog/beautiful_soup_select.html select 的功能跟find和find_all 一样用来选取特定的标签, ...

  6. mysql表关系

    表与表之间的关系 """ 把所有数据都存放于一张表的弊端 1.组织结构不清晰 2.浪费硬盘空间 3.扩展性极差 """ # 上述的弊端产生原 ...

  7. Linux命令alias - 设置命令的别名

    用途说明设置命令的别名.在linux系统中如果命令太长又不符合用户的习惯,那么我们可以为它指定一个别名.虽然可以为命令建立“链接”解决长文件名的问题,但对于带命令行参数的命令,链接就无能为力了.而指定 ...

  8. Face Recognition 人脸识别该如何测试

    猪圈子,一个有个性的订阅号 01 测量人脸识别的主要性能指标有 1.误识率(False;Accept;Rate;FAR):这是将其他人误作指定人员的概率; 2.拒识率(False;RejectRate ...

  9. Job Shop

    flow shop: 如果每个作业需要在每个处理机上加工,而且每个作业的工序也相同,即在处理机上加工的顺序相同,则这种多类机的环境称为同顺序作业或流水作业. job shop: 如果每个作业需要在每个 ...

  10. Kubernetes集群部署DNS插件

    准备 kube-dns 相关镜像 准备 kube-dns 相关 yaml 文件 系统预定义的 RoleBinding 配置 kube-dns 相关服务 检查 kube-dns 功能 kube-dns ...