C++学习笔记(三)
关于const的一点补充
(1)不可通过常量指针修改其指向的内容。
(2)不可以常量指针赋值给非常量指针,反过来可以。因为这样就失去了常量指针的安全性。
const int * p1;int * p2;
p1=p2;//可以
p2=p1;//错误
p2=(int *)p1;//可以,强制类型转换
动态内存分配
用new运算符实现动态内存分配
- 用法一:分配一个变量
例如p=new T;
中,T是类型名,比如int,double等,p是类型为T*的指针。用处是动态分配出一个sizeo(T)大小的内存,并将起始地址赋值给p。然后就可以用p这个指针修改该内存空间的内容。例如:
int *pn;
pn=new int;
*pn=5;
-
用法二:分配一个数组
例如p=new T[N];
(N是元素个数,可以是整型表达式),作用是动态分配出N*sizeo(T)大小的内存,并将起始地址赋给指针p。 -
new运算符的返回值类型
new T;
和new T[N]
的返回值类型都是T*。
用delete运算符释放动态分配的内存
格式:delete 指针;//该指针必须指向new出来的空间
注意:对于一片空间,delete操作只能执行一次
用法示例如下:
int *p=new int;
*p=5;
delete p;
用delete运算符释放动态分配的数组
格式:delete [] 指针
内联函数
定义方法:在函数定义前加inline关键字即可。
例如:
inline int max(int a,int b)
{
if(a>b) return a;
return b;
}
函数重载
定义:一个或多个函数,名字相同,参数个数或参数类型不同,就叫函数的重载。
优点:使函数命名变得简单。
实现方法:根据调用语句中实参的个数和类型判断。
注意:如果只有函数返回值不同,名字和参数表都一样,不是重载,是重复定义。
函数的缺省函数
解释:定义函数时可以让最右边的连续若干个参数有缺省值,这样在调用时如果相应位置不写参数,对应的参数就是缺省值。
目的:提高程序的可扩充性。