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的更多相关文章

  1. C++知识点案例 笔记-6

    1.三种友元函数 -非模板友元函数 -约束模板友元函数 -非约束模板友元函数 2.非类型参数 3.模板特化 1.三种友元函数 =====三种友元函数===== --1---非模板友元函数 #inclu ...

  2. C++知识点案例 笔记-4

    1.纯虚函数 2.抽象类 3.内部类 4.运算符重载 5.类的函数重载 6.友元的函数重载 1.纯虚函数 ==纯虚函数== //有时基类中无法给出函数的具体体现,定义纯虚函数可以为派生函数保留一个函数 ...

  3. C++知识点案例 笔记-3

    1.基类指针等与派生类的兼容 2.构造函数 3.析构函数 4.虚基类 5.虚函数 6.虚析构函数 ==基类指针等与派生类的兼容== #include <iostream> #include ...

  4. C++知识点案例 笔记-2

    1.友元函数 2.友元类 3.继承(公有继承) 4.公有继承的访问权限 5.私有继承的访问权限 6.保护继承的访问权限(两次继承) ==友元函数== #include <iostream> ...

  5. C++知识点案例 笔记-1

    1.重载函数 2.内联函数 3.New.Delete 4.重载与.const形参 5.常数据成员 6.静态成员函数 ==重载函数== #include <iostream> using n ...

  6. Java后端高频知识点学习笔记1---Java基础

    Java后端高频知识点学习笔记1---Java基础 参考地址:牛_客_网 https://www.nowcoder.com/discuss/819297 1.重载和重写的区别 重载:同一类中多个同名方 ...

  7. [置顶] 单片机C语言易错知识点经验笔记

    今天写这一篇文章并不是因为已经想好了一篇文章才写下来,而是我要将这一篇文章作为一个长期的笔记来写,我会一直更新.在进行单片机开发时,经常都会出现一些很不起眼的问题,这些问题其实都是很基础的c语言知识点 ...

  8. 面试总结:鹅厂Linux后台开发面试笔试C++知识点参考笔记

    文章每周持续更新,各位的「三连」是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) 文章是由自己笔试面试腾讯的笔记整理而来,整理的时候又回顾了一遍,中间工 ...

  9. php 知识点 --个人笔记

    ##2015-09-06 为防止用户看到错误信息,而出现的不友好界面.故一般性会在php.ini里设置:display_errors = Off;不过在开发的时候,我们有时候需要打开错误信息.这时候, ...

随机推荐

  1. 火爆外网的 DGS 框架使用

    Netflix 已开放其 Domain Graph Service(DGS)框架的源代码 ,该框架是为了方便整合 GraphQL 使用,用于简化 GraphQL 的实现. GraphQL 主要是作用于 ...

  2. HashSet、CopyOnWriteArraySet、ConcurrentSkipListSet源码解析(JDK1.8)

    目录 HashSet源码解析 HashSet简单使用的demo HashSet中的变量 HashSet的构造函数 HashSet的add方法 HashSet的iterator方法 HashSet的si ...

  3. SQL Server CDC配合Kafka Connect监听数据变化

    写在前面 好久没更新Blog了,从CRUD Boy转型大数据开发,拉宽了不少的知识面,从今年年初开始筹备.组建.招兵买马,到现在稳定开搞中,期间踏过无数的火坑,也许除了这篇还很写上三四篇. 进入主题, ...

  4. KMP(梅开三度之数据结构详解版

    前言 KMP算法是一种字符串匹配算法,其重中之重是next数组的构建,其代码的简洁与神奇使其广受关注. 但不难发现,acm中学到的KMP和数据结构里面学到的KMP并不一样o(︶︿︶)o 之前我写过ac ...

  5. 一文带你掌握MySQL查询优化技能

    查询优化本就不是一蹴而就的,需要学会使用对应的工具.借鉴别人的经验来对SQL进行优化,并且提升自己. 分享一套博主觉得讲的很详细很实用的MySQL教程给大家,可直接点击观看! https://www. ...

  6. 10- JMeter5.1.1 工具快速入门

    什么是JMeter JMeter是Apache组织开发的开源软件,由Java语言实现. 主要用于软件系统性能测试,他最初被设计用于web测试,后来被扩展到其他领域. Jmeter特点 http://w ...

  7. hdu2235 机器人的容器

    题意: 机器人的容器 Time Limit: 3000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  8. C++ Log日志系统

    闲得无聊,瞎写的一个东西. 好多地方能够优化甚至可能重写,也没写,就记下了个思路在这里. 主要熟练一下C++17的内容. version = 0.1 lc_log .h 1 #pragma once ...

  9. 【python】Leetcode每日一题-颠倒二进制位

    [python]Leetcode每日一题-颠倒二进制位 [题目描述] 颠倒给定的 32 位无符号整数的二进制位. 示例1: 输入: 00000010100101000001111010011100 输 ...

  10. 使用jenkins一键打包发布vue项目

    jenkins的安装 Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建.测试和部署软件. Jenkins 支持各种运行方式,可通过系统包.Docker 或者通过一个独立 ...