引用
引用相当于变量的别名,初始化之后不能修改引用的对象.
引用作为函数的返回值
#include <iostream>
using namespace std;
int n = 4;
int & setValue()
{
return n;
}
int main()
{
setValue() = 40; // 相当于n = 40
cout<<n<<endl;
return 0;
}
可以看到以引用作为函数返回值,可以实现对于这个值的赋值操作.
常引用
在定义引用前加const关键字,则定义一个常引用.
不能通过修改常引用来修改其引用的内容.
常引用和引用是不同的数据类型.
可以通过T或T&来初始化const T &.
但是不能用const T &来初始化T&.
const关键字
定义常量指针
不能通过常量指针来修改它所指向的内容.下面的代码会编译出错.
#include <iostream>
using namespace std;
int main()
{
int a,b ;
const int *p = &a;
*p = 5;
return 0;
}
可以通过T来初始化const T ,但是不能用const T 来初始化T.下面的代码编译时主函数体第三行正确,第四行会报错.
#include <iostream>
using namespace std;
int main()
{
int a, b;
int * p1 = &a;
const int *p2 = p1;
p1 = p2;//错误
p1 = (int *)p2;正确
}
new 关键字
C++使用new关键字来分配一段空间,使用delete关键字来删除new分配的空间.
int *p1
p1 = new int;
delete p1;
delete p1;// 编译出错,一片new的空间不能delete两次.
int *p2
p2 = new int[n];
delete p1;// 编译不会出错,但是只能释放第一个int的内存空间.
delete [] p1;//正确
int a
delete a;// 编译不会出错,但是运行时回报错,delete只能释放new分配的空间.