1.指针和引用的区别

           在学习这本书的过程中自己并不是对知识点理解得很透彻,毕竟我没有参加过一些项目,只是自己随便写写代码。可能没有太多的醍醐灌顶的时候,写下这篇文章是希望能给自己总结的同时能帮助一些对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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值