C++函数模板与内存管理

C++函数模板与内存管理

一:模板

定义:若一个程序的功能是对某种特定的数据类型进行处理,则将所处理的数据类型说明为参数,就可以把这个程序改写成模板,模板可以让程序对任何其他数据类型进行同样方式的处理。
C++程序由类和函数组成,模板也分为类模板(class template)和函数模板(function template)。因此,可以使用一个带多种不同数据类型的函数和类,而不必在意数据类型的各种情况。

示例:

template<class A,class B>
void swap(A& a,B& b){
A temp=a;             
a=b;
b=temp;
}  

上面这段代码实现了两个数据变量的交换,若是在C语言中,不同类型的数据就必须定义不同的交换函数,而他们的代码除了类型外完全相同,这就使代码显得冗余,使用函数模板之后就只需定义一个函数,函数模板会根据我们调用时的实参形成对应类型的函数。所以这只是把我们程序员的工作交给编译器罢了。类模板的使用跟函数模板相差不多。

示例:

template<class T>
class Stack
{
private:
    T* a;
    int top;
    int capacity;
}

二:内存管理

C++中用来内存管理的运算符有new和delete,它们和C语言中的malloc和free有着相似的作用。

区别:new的delete是运算符,malloc和free是函数

new=开辟空间+调用构造函数

delete=调用析构函数+释放空间

malloc=开辟空间

free=释放空间

为什么C++要创建new的delete来内存管理?因为malloc和free等无法做到自定义类型的内存管理,而new和delete有调用构造函数和析构函数的作用,故能够做到自定义类型的内存管理。

new的语法: 类型指针 变量名 = new 类型

​ 类型指针 变量名 = new 类型[](要开辟多个变量类型的空间时)

delete语法: delete 变量名

​ delete []变量名 (要释放多个变量类型的空间时)

示例:

int * a = new int;
int * b = new int[10];//给b开辟一个装有10个变量的数组
delete a;
delete[] b;
  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值