day04

文章讲述了C++中的运算符重载和模板的概念与应用。运算符重载允许为不同的数据类型提供相同运算符的功能,如加法(+),并通过成员函数和友元函数两种方式实现。同时,介绍了函数模板和类模板,作为泛型编程的工具,它们能处理不同类型的数据,减少代码冗余。文章还提到了C++标准模板库(STL)中的vector,作为一个顺序容器,其在存储和访问数据上的特性。
摘要由CSDN通过智能技术生成
  1. 运算符重载

函数重载:函数名相同、函数功能相似、参数不同(个数、类型、顺序)、与返回值类型无关的一组函数!

运算符:+、-、++、--、 = 等等

为什么要进行重载的?

两数求和:

类型: int、 double、char、 类对象求和呢?

为什么要进行运算符重载:

让我们的运算更丰富一些,适用各种各样的数据类型!

运算符重载的方式有几种?

两种,一种是使用成员函数进行重载;使用友元函数进行重载。

+: 必须是两个

注意:运算符重载的时候,操作数的个数是不能发生变化的,并且参数是不能有默认值!

格式是什么样子?

友元的格式:

类类型 Operator+(参数1, 参数2);

成员的格式:

类类型 Operator+(参数2);

以复数类为例子: 1+2j 2+3j

1-1、友元函数重载+运算符

使用:

1-2、成员运算符+重载:

使用

区别:

友元运算符重载的参数个数比成员运算符重载的参数个数多一个;

成员运算符重载:隐藏的参数this代表它自己,表示第一个操作数,只需要给第二个操作数即可!

函数类型是类类型的时候,也会执行拷贝构造函数!

1-3、前++运算符重载

什么时候函数类型设计成类类型的引用:

如果我们返回的对象和参数传进来的对象是同一个的话,用引用!

1-4、后置++运算符重载

调用:

问:所有的运算符都可以通过友元和成员函数进行重载吗?

1-5、<<运算符重载—友元重载

输出流对象 << 输出的内容

  1. 模板: 函数模板和类模板

什么是模板:

Ppt、简历

泛型编程 : 就是类型是不确定的!逻辑是一致的!

2-1、函数模板

两数求和:

函数重载存在的问题:

只要类型不同就需要重新定义函数,造成逻辑冗余!

解决:把数据类型参数化

共同的逻辑提取出来,得到了函数模板!

函数模板的格式:

template<class/typename 形参>

函数类型 函数名(参数列表){}

函数模板是函数吗?不是函数,是模板!是不占内存的

什么时候函数模板才会变成真这个的函数呢?

实例化的时候

实例化的时候类型一样的,模板函数只会生成一个,后面要用的时候直接使用即可!

函数模板是可以进行重载的!

使用:

2-2、类模板

单链表为例子:

链表是由一个一个的节点组成的。

每一个节点: 数据域和指针域

一个类是模板,类中的所有的成员函数都是函数模板!!!

使用:

练习: 写两数比大小的函数模板,并测试!!!

  1. C++中标准模板库 STL

C++中很多代码都是通过模板去实现的!

STL S标准 T模板L 库

就包含了很多的函数模板和类模板

学习一个类模板

3-1、 vector—向量—数组

是一种顺序容器,容器就是用来保存数据

结构

引入文件 #include <vector>

容器的begin() 和 end()的位置如下:

面试题目:

总结一下数组和vector的区别?

STL中的几大组件:https://blog.csdn.net/NXHYD/article/details/108072498

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值