C++如何直接对对象进行运算操作
来源:互联网 发布:php判断是否为空 编辑:程序博客网 时间:2024/05/20 13:18
在c++中类的对象数据根据类的定义有关,通常类对象的数据都被定义为私有成员,防止外部对其随意更改而设定的,只有通过类自己定义的方法可以来访问类的私有成员,而在很多操作符面前对于类对象是不能直接进行操作的,要想直接操作有两种方法,一种是在类里写一个该操作符使用的方法来实现,另一种就是通过我们所说的重在操作符来实现。
这里我们先来看看重载输出流的方法:
ostream& operator<<(ostream& out, class test& t);//重载输入istream& operator>>(ostream& in, class test& t1);//重载输出
下面我们简单的来看一个例子:
#include<iostream>using namespace std;class Test;ostream& operator<<(ostream &out, const Test &t);//out为cout别名,因为要引用返回,所以这里必须引用istream& operator>>(istream &in, const Test &t);//in为cin别名,因为要引用返回,所以这里必须引用class Test{ friend ostream& operator<<(ostream &out, const Test &t);//友元函数,访问私有数据 friend istream& operator>>(istream &in, const Test &t);public: Test(int p=0) : data(p) {} ~Test() {}public: int value() { return data; }public: int operator +(const Test &t) { return data+t.data; } int operator -(const Test &t) { return data-t.data; } int operator *(const Test &t) { return data*t.data; } int operator /(const Test &t) { return data / t.data; } int operator>=(const Point &pt) const;//实现原理一样 int operator<(const Point &pt) const; int operator>(const Point &pt) const; int operator==(const Point &pt) const; int operator<=(const Point &pt) const;private: int data;};ostream& operator<<(ostream &out, const Test &t)//需要放在类外实现,设为友元函数{ out<<t.data; return out;}istream& operator>>(istream &in, const Test &t){ in>>t.data; return in;}int main(){ Test t(10); Test t2(20); cout<<(t + t2)<<endl; cout<<t<<endl;//1 cout<<t.value()<<endl;//2 cin>> t; cout<<endl; return 0;}
在代码中我们简单的展示了使用输出流的两种方法,通过重载一些操作符,可以让对象和我们的变量一样可以直接输出和操作。
阅读全文
0 0
- C++如何直接对对象进行运算操作
- 为什么要对对象进行序列化操作?
- 对对象进行序列化以及反序列化操作
- Redis对对象的操作
- 对对象的简单操作
- 运用“==”运算符与equals()方法对对象进行比较
- Collections.sort()对对象进行排序
- 按规则对对象数组进行排序
- 对对象的某些属性进行排序
- Java对对象进行保存和读取
- Collections.sort()对对象进行排序
- angularjs中的$watch,对对象进行监视
- 利用发反射对对象进行赋值
- Comparable接口对对象进行排序
- 排序(对对象进行排序)二
- 对对象按对象的某个属性进行排序
- 【LeetCode】two num 利用comparable接口 对对象进行排序
- 对对象的操作一定要以引用的方式传递
- webpack+vue起步
- 对比Ruby和Python的垃圾回收(1)
- String类
- JSch Java实现的 SFTP功能的利器
- jQuery lazyload 懒加载
- C++如何直接对对象进行运算操作
- mysql 三个月前
- apache poi下载流程
- 获取当前程序的版本和获取某个文件的版本
- 京东金融商户平台对接开发
- 从头创建一个基于 React, webpack, babel 的模板项目
- 城市三级联动
- KCF目标跟踪方法分析与总结
- CAD 的文字能够被选中但是不能修改,怎么办?