Effective C++学习笔记 第一弹 1-4

 

条款1 尽量以const和inline取代#define

1、当这么做时 #define PI 3.1415

PI 在编译之前会被预处理器移走,而并没有进去符号表,当调试时,你能看到3.1415,但是找不到PI。

2、常量指针

     常量指针:常量指针就是指向常量的指针,指针所指向的地址的内容是不可修改的。
    如 const int *p;

         int a=1;

         int b=2;

         p = &a;

         *p = 3; //error 常量指针指向的内容不能被修改

         p =&b; //ok 常量指针指向的地址可以被修改

3、指针常量

     指针常量:指针常量就是是指针的常量,它是不可改变地址的指针,但是可以对它所指向的内容进行修改

     如  int * const  p = NULL;

          int a = 1;

          int b = 2;

          p = &a;

          p = &b; //error p不能被修改 指向的地址不能被修改

          *p = b;//ok 内容可以被修改

4、指向常量的常量指针

     如 const int * const p = NULL;

     既不能修改指向 也不能修改内容

5、当需要定义一个class专属常量 可以这么做

 

/*----------------.h---------------------*/

    class GamePlay

   {

   private:

          //static const int NUM;           error:只是定义,在声明之前不能使用,必须先初始化

          static const int NUM = 4;  //static:因为所有对象公用NUM   const防止NUM被修改

          int scores[NUM];

   };

/*----------------.cpp--------------------*/

const int GamePlay::NUM = 4;  //假如在.h文件未使用 可以在.CPP文件中初始化

 

当编译器不允许类内初始化时 可以改用枚举类型

class GamePlay

{

private:

      enum { NUM = 5 };

      int Score[NUM];

};

6、用inline代替宏命令

较小的程序推荐用内联函数,但是否真的内联是由编译器决定的。

条款2 用<iostream>代替<stdio.h>

不解释

条款3 尽量以new和delete取代malloc和free

后者只是分配和释放内存,对构造函数和析构函数一无所知,其中没有任何对象被初始化

更不要混合使用

条款4 尽量使用C++风格的注释形式

也就是用//俩杠 代替 /**/杠星星杠 因为后者在嵌套的时候会出现意外

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值