C++知识点案例 笔记-5
1.关系运算符重载
2.类型转换函数重载
3.转换构造函数
4.函数模板
5.显式实例化
6.类模板外定义模板函数
1.关系运算符重载
==关系运算符重载==
//直接(按分数)比较两个对象
#include<iostream>
using namespace std;
class Student
{
public:
friend ostream& operator<< (ostream& os,const Student& st);
friend istream& operator>> (istream& is, Student& st);
friend bool operator == (const Student& st1,const Student& st2);
friend bool operator != (const Student& st1,const Student& st2);
friend bool operator > (const Student& st1,const Student& st2);
friend bool operator < (const Student& st1,const Student& st2);
private:
int id;
double score;
};
ostream& operator<< (ostream& os,const Student& st)
{
os <<"id:"<<st.id<<"score"<<st.score;
return os;
}
istream& operator>> (istream& is,Student& st)
{
is >> st.id >> st.score;
return is;
}
bool operator == (const Student& st1,const Student& st2)
{
return st1.score == st2.score;
}
bool operator != (const Student& st1,const Student& st2)
{
return !(st1.score == st2.score);
}
bool operator > (const Student& st1,const Student& st2)
{
return (st1.score > st2.score);
}
bool operator < (const Student& st1,const Student& st2)
{
return (st1.score < st1.score);
}
int main()
{
Student st1,st2;
cout<<"请输入两名学生的ID和score:"<<endl;
cin>>st1>>st2;
if (st1 > st2)
{
cout<<"st1分数高于st2"<<endl;
}
else if(st1 < st2)
{
cout<<"st1分数低于st2"<<endl;
}
else
{
cout<<"两名学生分数相同"<<endl;
}
return 0;
}
2.类型转换函数重载
==类型转换函数重载==
#include<iostream>
using namespace std;
class bian
{
private:
int m,n;
public:
bian(int m1,int n1):m(m1),n(n1){}
void show()
{
cout<<"bb:"<<endl;cout<<m<<","<<n<<endl;
}
operator char()
{
return static_cast<char>(m);
}
};
int main()
{
bian bb(69,96);
bb.show();
char ch = bb;
cout<<ch<<endl;
return 0;
}
3.转换构造函数
==转换构造函数==
#include<iostream>
using namespace std;
class jie
{
private:
int m,n;
public:
jie(int a, int b):m(a),n(b){}
jie(double c)
{
cout<<"把m转换成字符型,并给n一个值"<<endl;
m = static_cast<int>(c);
n = 0;
}
void show()
{
cout<<m<<" "<<n<<endl;
}
};
int main()
{
jie s1(58,68);
jie s2(2.333);
cout<<"s1"<<endl;
s1.show();
cout<<"s2"<<endl;
s2.show();
return 0;
}
4.函数模板
==函数模板==
//目的 函数运行与类型无关
#include<iostream>
using namespace std;
template<typename T>
T add(T x,T y)
{
return x+y;
}
int main()
{
cout<<add(5,516)<<endl;
cout<<add(3.1415,6.011)<<endl;
return 0;
}
5.显式实例化
==显式实例化==
//指定参数类型,便于不同类型数据类型相加
#include<iostream>
using namespace std;
template<typename T>
T add(T x,T y)
{
return x+y;
}
template int add<int>(int x,int y);
int main()
{
cout<<add(5,516)<<endl;
cout<<add<int>(3.1415,'a')<<endl;
return 0;
}
6.类模板外定义模板函数
==类模板外定义模板函数==
#include<iostream>
using namespace std;
template<typename T>
class Fly
{
private:
int size;
T* str;
public:
Fly(T fly[],int s);
void show();
};
//类模板外定义成员函数
template<typename T>
Fly<T>::Fly(T fly[],int s)
{
str = new T[s];
size = s ;
for(int i = 0;i < size; i++)
{
str[i] = fly[i];
}
}
template<typename T>
void Fly<T>::show()
{
for(int k = 0; k <size; k++)
{
cout<<*(str + k)<<endl;
}
}
int main()
{
char ffly[]={'a','d','f','e','t'};
//创建类模板对象
Fly<char> F1(ffly,5);
F1.show();
int jfly[]={5,2,1,1314};
//创建类模板对象
Fly<int> F2(jfly,4);
F2.show();
return 0;
}
C++知识点案例 笔记-5的更多相关文章
- C++知识点案例 笔记-6
1.三种友元函数 -非模板友元函数 -约束模板友元函数 -非约束模板友元函数 2.非类型参数 3.模板特化 1.三种友元函数 =====三种友元函数===== --1---非模板友元函数 #inclu ...
- C++知识点案例 笔记-4
1.纯虚函数 2.抽象类 3.内部类 4.运算符重载 5.类的函数重载 6.友元的函数重载 1.纯虚函数 ==纯虚函数== //有时基类中无法给出函数的具体体现,定义纯虚函数可以为派生函数保留一个函数 ...
- C++知识点案例 笔记-3
1.基类指针等与派生类的兼容 2.构造函数 3.析构函数 4.虚基类 5.虚函数 6.虚析构函数 ==基类指针等与派生类的兼容== #include <iostream> #include ...
- C++知识点案例 笔记-2
1.友元函数 2.友元类 3.继承(公有继承) 4.公有继承的访问权限 5.私有继承的访问权限 6.保护继承的访问权限(两次继承) ==友元函数== #include <iostream> ...
- C++知识点案例 笔记-1
1.重载函数 2.内联函数 3.New.Delete 4.重载与.const形参 5.常数据成员 6.静态成员函数 ==重载函数== #include <iostream> using n ...
- Java后端高频知识点学习笔记1---Java基础
Java后端高频知识点学习笔记1---Java基础 参考地址:牛_客_网 https://www.nowcoder.com/discuss/819297 1.重载和重写的区别 重载:同一类中多个同名方 ...
- [置顶] 单片机C语言易错知识点经验笔记
今天写这一篇文章并不是因为已经想好了一篇文章才写下来,而是我要将这一篇文章作为一个长期的笔记来写,我会一直更新.在进行单片机开发时,经常都会出现一些很不起眼的问题,这些问题其实都是很基础的c语言知识点 ...
- 面试总结:鹅厂Linux后台开发面试笔试C++知识点参考笔记
文章每周持续更新,各位的「三连」是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) 文章是由自己笔试面试腾讯的笔记整理而来,整理的时候又回顾了一遍,中间工 ...
- php 知识点 --个人笔记
##2015-09-06 为防止用户看到错误信息,而出现的不友好界面.故一般性会在php.ini里设置:display_errors = Off;不过在开发的时候,我们有时候需要打开错误信息.这时候, ...
随机推荐
- 通过Dapr实现一个简单的基于.net的微服务电商系统(二)——通讯框架讲解
首先感谢张队@geffzhang公众号转发了上一篇文章,希望广大.neter多多推广dapr,让云原生更快更好的在.net这片土地上落地生根. 目录:一.通过Dapr实现一个简单的基于.net的微服务 ...
- Vue3+Vite引入Echarts5.0图表库
1 概述 环境Vue3+Vite,需要引入ECharts库. 2 尝试 目前ECharts已更新到5.0版本,在Vue中引入并不难,npm/cnpm安装后在需要的组件中引入: import echar ...
- Prometheus【node_exporter】+grafana监控云主机
下面说一下这个开源软件的安装实践过程,目标如下: 在监控服务器上安装prometheus 在被监控环境上安装exporter 安装grafana 在监控服务器上安装prometheus 开始安装pro ...
- Django 视图(View)
1. 视图简介 2. URLconf 1)关联各应用下的 URLconf 2)URLconf 的编写 3)namespace 反向解析 3. 视图函数&错误视图 4. HttpRequest ...
- 技术面试问题汇总第004篇:猎豹移动反病毒工程师part4
这次所讨论的三个问题,比如DLL以及HOOK,很容易被病毒木马所利用,因此必须要比较全面地进行了解.而异常处理机制,则往往与漏洞相关联.它们自身的概念并不难理解,只是由之引申而来的问题,在计算机安全领 ...
- 路由器逆向分析------MIPS交叉编译环境的搭建(Buildroot)
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/68950682 为了能在我们熟悉的windows或者ubuntu下开发mips架构的 ...
- 路由协议之RIP
目录 RIP协议 RIP的路由汇总和过滤 RIP的认证 RIP的防环机制 华为/思科中的配置 RIP协议 RIP协议是一种内部网关协议(IGP),底层是贝尔曼福特算法,是一种动态路由选择协议,用于自治 ...
- 4.PHP正则表达式与数组
PHP正则表达式相关 行定位符 开头 ^tm 结尾 tm$ 不限制 tm 单词定界符 \btm\b 单词tm,如果想取反的话就是大写的 \Btm\B 或的关系,[Tt][Mm] 可以表达 tm T ...
- Windows核心编程 第23章 结束处理程序
第2 3章 结束处理程序 SEH(结构化异常处理) 使用 S E H的好处就是当你编写程序时,只需要关注程序要完成的任务. 如果在运行时发生什么错误,系统会发现并将发生的问题通知你.利用S E H,你 ...
- java之Map和Collection
java中保存对象的容器可分为两类: 1.Map.Map是以键值对的形式来保存一组对象,可以通过键来查找值. 2.Collection.用来保存独立对象的序列.Collection又可分为三种类型: ...