1.指针和引用的区别

来源:互联网 发布:python二分查找 编辑:程序博客网 时间:2024/05/19 04:02

           在学习这本书的过程中自己并不是对知识点理解得很透彻,毕竟我没有参加过一些项目,只是自己随便写写代码。可能没有太多的醍醐灌顶的时候,写下这篇文章是希望能给自己总结的同时能帮助一些对C++感兴趣的朋友,对于文章中不正确的地方希望大家能够多多指正。

       1.引用必须要初始化

       一般来说在创建指针的时候是可以不用赋值的,没有赋值的指针在编译的是可以通过的,只不过会产生一个警告提示你没有赋值。然后引用是必须在创建的时候需要赋值的,否则会被报错。

       然后下面的代码很好玩:

              char* s = 0;

              char& r = *s;

       这样投机取巧的办法是可以通过编译的,但同时会造成很严重的后果(至于会有什么后果我就不知道了,怕电脑爆炸。。)

       虽然引用必须初始化很麻烦,但同时也带来了一些优点,比如很多时候不需要像测试指针那样测试这个引用是否为空

       void Test(const int *s)

       {

              if(s)      //还要测试指针是否合法,很麻烦。

              {

                     xxxx ; 

              }

       }


    2.引用永远只能指向一个对象

         

         char *pc = 0;

         char *pa = 0;

         char &test = *pc;

         test = *pa;  

         这样是能编译通过的,但实际上test的值没有发生改变的,依旧是pc的引用。


    3.重载运算符最好用引用

        重载运算符这个知识点在书上看到的基本都是用引用作为返回变量。当然用指针也是可以的,只不过会比较麻烦

        比如我们要重载的是 [ ],如果我们采用指针作为返回值,就会变为这样:

        Student s[5];       //Student是一个类

        *s[5].iValue = 10;   //把10赋予s[5]中的iValue

         可以看出这样跟我们平时学习的数组很不一样,有个 * 无疑干扰了看代码的人。

         如果我们返回是采用引用作为返回值,就会变成这样:

         s[5].iValue = 10;

         这样就清晰了很多。


         好,书上的知识大概就总结了这么多,希望能给初学者一些帮助。

0 0
原创粉丝点击