码迷,mamicode.com
首页 > 编程语言 > 详细

恶补C++ 之 指针与引用的区别

时间:2014-11-28 18:33:50      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:c++ 指针 引用 相同 区别

相同:

指针与引用看上去完全不同,但是它们似乎有相同的功能,它们都是间接的引用其他的对象。

区别:

1):引用必须总是指向某些对象;而指针可以不指向任何对象。如果变量肯定指向一个对象,例如你的设计不允许变量为空,这时你就可以把变量声明为引用 

2):引用必须被初始化;而指针可以不被初始化。例如下面的例子

            string &str;        // 错误,引用必须被初始化

            string s("abcd");

            string &str = s;    // 正确,str 指向s

            string *ps;    // 合法,但是危险。

3):引用在初始化被赋值指定对象后,就不能再次被重新赋值以指向另外一个对象;而指针可以。例如下面的例子:

            string s1("Jimmy");

            string s2("star");

            string &rs = s1;    // rs 引用 s1

            string *ps = &s1;    // ps 指向 s1

            rs = s2;    // rs仍旧引用s1,但是s1的值现在是“star”

            ps = &s2;    // ps现在指向s2,s1没有改变。


效率上来说,引用的效率比使用指针的要高,因为在使用引用之前不需要测试它的合法性。


        总的来说,在以下情况下你应该使用指针,一是你考虑到存在不指向任何对象的可能(在 这种情况下,你能够设置指针为空),二是你需要能够在不同的时刻指向不同的对象(在这 种情况下,你能改变指针的指向)。如果总是指向一个对象并且一旦指向一个对象后就不会 改变指向,那么你应该使用引用。 

    还有一种情况,就是当你重载某个操作符时,你应该使用引用。 


        建议:

    当你知道你必须指向一个对象并且不想改变其指向时,或者在重载操作符并为防止不必 要的语义误解时,你不应该使用指针。而在除此之外的其他情况下,则应使用指针。 


本文出自 “Jimmy恶补C++” 博客,请务必保留此出处http://jimmystar.blog.51cto.com/3716199/1584042

恶补C++ 之 指针与引用的区别

标签:c++ 指针 引用 相同 区别

原文地址:http://jimmystar.blog.51cto.com/3716199/1584042

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!