zoukankan      html  css  js  c++  java
  • 指针引用effecitve c++ 条款2125

    查了好多资料,发现还是不全,干脆自己整理吧,至少保证在我的做法准确的,以免误导读者,也是给自己做个记录吧!

        继承写下去

        

        

    条款21: 尽可能应用const

        

    这个条款的意思是,能应用const的地方,都要用const.

        

    这个条款的利益是毋庸置疑的,const是c++里头引入的,后来c语言里头也有了,说明它确切很有效。

        


        

    关于const的用处,这里就不展开了。大概写一下

        

    1 常量  

        

          const int pi = 3.1416926

        

    2  常量指针  (内容不能变,指针可以变)

        

     
    int   q = 1;
         const int   *p = &q; //准确
    p = π //准确;
         *p  = 2; //错误;

        


        

    指针常量  (指针不能变,内容可以变)

        


    	int q1 = 1;
    	int * const s = &q;
    	*s = 2;//准确
    	s = &q1;//错误

       关于2,3的说明和如何记忆:
       *后面的 const修饰的都是*,表示内容不能变。  const int *p 和 int const *p等价。你可以这么记忆, cosnt修饰*p,所以后面*p不能变。

        

        *后面的const修饰的都是后面的指针变量,指针不能变。int * const p,所以这个指针一定要初始化,因为后面不能变了。  可以记忆为const 修饰p,  p不能变。

        


        

    4指向常量的常量指针 (两个都不能变)

        


        

         const int *p  const  p  = &q;

        


        

    这些是个基本的用法,关于const比拟详细的用法,我后面专门写一篇文章,来阐述。

        


        

      这条原则就是,计划的时候斟酌,哪些变量,尤其是函数的参数,哪些不能变,需要斟酌清晰,应用const防止代码误操作这些变量。

        


        


        每日一道理
    风,那么轻柔,带动着小树、小草一起翩翩起舞,当一阵清风飘来,如同母亲的手轻轻抚摸自己的脸庞,我喜欢那种感觉,带有丝丝凉意,让人心旷神怡。享受生活,不一定要有山珍海味、菱罗绸缎为伴,大自然便是上帝所赐予人类最为珍贵的。

        

    条款22: 尽量用“传引用”而不用“传值”

        

    c 语言中没有引用这个观点,因为引用实质上是指针的一种变异。

        

    但是引用的好出呢?写法比拟舒畅,语法简略一些。

        


        

    在c++中出现了类,所以在涉及到函数中有类的时候,最好用传引用,而不是传值。

        

    两个利益:

        

    1 效率高,不会频仍调用构造和析构函数

        

    2 不会出现截断现象,父类里头的函数不会被截断。

        

    这个在google的编程标准里头也有说明。

        


        

    条款23: 必须返回一个对象时不要试图返回一个引用

        

    这个条款的意思是,怕人们看到既然引用那么高效,那么返回值的时候会滥用引用。

        

    引用必须有有对象的。

        

    举个例子,如果返回值,就是函数参数里头的对象,那么应用引用就比拟好了。

        

    如果返回值需要惹是生非,必须内部应用指针new一个新的对象,然后返回。但是这个时候,你需要心惊胆战的想着什么时候释放这个new出来的内存。 (构建在堆栈上的对象,函数结束的时候就消失了,用引用很危险)

        


        

    这个时候就老老实实的返回对象就可以了。

        


        

    条款24: 在函数重载和设定参数缺省值间慎重选择

        

    这个条款,主要是怕函数重载和缺省直接由冲突。

        


        


        

    一般来说,如果可以选择一个合适的缺省值并且只是用到一种算法,就应用缺省参数(参见条款38)。否则,就应用函数重载。

        

    也就是说缺省参数,多用于一些默认的参数设置的时候,大部分情况下都应用这些默认参数,有时候会改变。

        

    例如盘算中立,我们可以默认g=9.8,但是如果在别的星球,就需要改变,但是算法都是一样的,不必要写那么多重载函数。

        


        

    条款25: 防止对指针和数字类型重载

        


        

    这个问题主要在于对于0到底是数组int 0 ,还是 指针 0,空指针。

        


    文章结束给大家分享下程序员的一些笑话语录: 一个合格的程序员是不会写出 诸如 “摧毁地球” 这样的程序的,他们会写一个函数叫 “摧毁行星”而把地球当一个参数传进去。

  • 相关阅读:
    [LeetCode] Majority Element II
    [Nginx] 事件模型
    [Nginx] 进程模型
    [C++] 函数中的字符串指针与数组
    [LeetCode] Shortest Distance to a Character
    [LeetCode] Number of Lines To Write String
    Ubuntu 16.04中安装谷歌Chrome浏览器
    Python、机器学习、计算机视觉、深度学习入门
    Sublime安装与配置
    [20160807][系统设计的三次迭代]
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3085963.html
Copyright © 2011-2022 走看看