条款1:仔细区别points和references

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Sea_muxixi/article/details/84521606

指针和引用主要有三个区别。

1:引用必须初始化,但是指针可以为null

	int* a = NULL;
	int &b;//这里报错
	int c = 10;
	int &d = c;

2:使用引用可能会比使用指针更有效率

主要原因是使用引用之前不需要测试其有效性。

void printDouble(const double &a)
{
	cout << a << endl;
}
void printDouble(const double *a)
{
	if (a)
	cout << *a << endl;
}

相同的功能,上面的a可以保证肯定是double类型,但下面的a可能是NULL;这里又多了一步。

3:指针可以指向另一个对象,但是引用永远代表最初获得的对象

	string s1("Nancy");
	string s2("Clancy");

	string &rs = s1; //rs 代表 s1
	string *ps = &s1;//ps 指向 s1


	rs = s2; // rs 仍然代表s1,但是s1的值变成了"Clancy"
	ps = &s2;// ps 现在指向s2,s1没有变化

猜你喜欢

转载自blog.csdn.net/Sea_muxixi/article/details/84521606