内存申请与模板
c/c++的内存申请
用new开辟空间时时,会自动调用该类构造函数;
用delete清理空间时,会自动调用该类的析构函数。
#define N 10
int main()
{
//C语言内存申请及释放
int *p1=(int*)malloc(sizeof(int*)*n);
free(p1);
//c++内存申请及释放
int* p2=new int;
int* p3=new int[N];
delete p2;
delete[] p3;
//初始化
int* p4=new int(1);
int* p5=new int[10]{};
int* p6=new int[10]{1,2,3,4};
}
显示调用构造和析构函数
int main()
{
Stack* p=(Stack*)operator new(sizeof(Stack));
new(p)Stack(n);
p->~Stack();
operator delete(p);
return 0;
}
全局变量与静态修饰参数存储在静态区
局部变量存储在栈区
模板(template)
函数模板
//编译器用模板实例化生成对应函数
//template<typename T>
template<class T>
void Swap(T& left,T& right)
{
T temp=left;
left=right;
right=temp;
}
int main()
{
int i=1,j=2;
Swap(i,j);
double x=1.1,y=2.2;
Swap(x,y);
Swap(1,(int)1.1);
Swap((double)1,1.1);
//显示实例化
Swap<int>(1,1.1);
Swap<double>(1,1.1);
return 0;
}
类模板
//模板作用范围在整个A类中,到大括号结束消失
template<class T>
class A
{
public:
A()
{
cout << "A的大小:" << sizeof(T) << endl;
}
};
int main()
{
A<int> a1;
A<double> a2;
return 0;
}