结构体 重载运算符模板 + 具体数据类型
来源:互联网 发布:mac暴风影音调节字幕 编辑:程序博客网 时间:2024/05/02 01:05
#include<iostream>using namespace std;struct point{ int x,y; point(int x=0,int y=0):x(x),y(y){}};point operator + (const point& a,const point& b){//重载+ 两个point结构体类型变量的相加 return point(a.x+b.x,a.y+b.y);}ostream& operator << (ostream &out,const point& p){ //重载使用 cout 输出的形式 out<<"("<<p.x<<","<<p.y<<")"; return out;}int main(){ point a,b(1,2); a.x=3; //通过1 2,可以确定,在输出流中,先进行的是,结构体中的相加操作,并得到一个结构体值,然后输出此值 //输出此值又通过重载输出流,改成了(x,y)的形式。 /*因此该模板的使用,可变换的有两部分: 首要条件为进行运算的为结构体, 1.结构体之间的各种运算的构造 // 2.输出形式的构造 */ //1 cout<<a+b<<endl; //2 point c; c=a+b; cout<<c<<endl; return 0;}
由于结构体里数据类型,存在某种类型不适应。 因此引用模板,将结构体里变量的数据类型具体化。
代码如下:(附带注释,其余不多说)
//此地模板 template <typename T> 需要在每一次使用<T>之前都要定义一次,具体原因现留着// 模板的优点:功能强大,有助于更好的理解STL ,应用范围广//模板的特性: 将变量的类型 具体了下来,解决了某种情况下的类型不适用。#include<iostream>#include<string>using namespace std;template <typename T> //模板定义为 T类型 T过的类型都为 T类型的struct point{ T x,y; point(T x=0,T y=0):x(x),y(y){} //其中 x y 都是T类型的};template <typename T>point<T> operator + (const point<T>& a,const point<T>& b){ return point<T>(a.x+b.x,a.y+b.y);}template <typename T>ostream& operator << (ostream &out,const point<T> p){ out<<"("<<p.x<<","<<p.y<<")";}int main(){ point<int> a(1,2),b(3,4); point<double> c(1.1,2.2),d(3.3,4.4); cout<<a+b<<" "<<c+d<<endl; return 0;}
阅读全文
0 0
- 结构体 重载运算符模板 + 具体数据类型
- 结构体运算符重载
- 结构体运算符重载
- 结构体运算符重载
- 结构体运算符重载
- 结构体中运算符的重载
- 结构体中运算符的重载
- 模板与重载运算符
- 高精度重载运算符模板
- c++ 运算符重载、数据类型转换
- 利用运算符重载将结构体排序--uva11729
- 友元类 运算符重载 new结构体数组
- [ ]运算符重载和函数模板练习
- C++运算符重载和模板
- 带模板参数的运算符重载
- 高精模板 重载运算符 (+,-,*)
- c++模板类下标运算符重载
- C++--模板遇上运算符重载
- leetcode Max Consecutive Ones 最大连续长度
- 顺序表应用5:有序顺序表归并
- html简单基础
- tensorflow python下配置opencv
- vim python环境配置
- 结构体 重载运算符模板 + 具体数据类型
- DS18B20单总线温度传感器驱动程序
- css标签大全
- html与css集合方式1-在html的head里
- P4059【NOIP2016 DAY1】换教室
- 人
- ArrayList介绍
- linux查看脏页数
- poj3735-Training little cats