文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Effective C++ 学习笔记(2)

Effective C++ 学习笔记(2)

时间:2011-04-10  来源:Daniel Zheng

尽量使用const和inline而不是#define

  尽量使用编译器而不是预处理。

  #define定义的宏不会加入符号表,不利于调试。

  当使用#define定义常量时,使用const替代:#define ABC 123 => const int ABC=123;定义某个class常量时要同时用static与const修饰,以确保只存在一份拷贝。

   当使用#define定义类似函数的宏时,用inline函数替代:

   举例:

     计算两个对象大小:#define max(a,b) ((a)>(b)?(a):(b)),对于这样的宏一定要加括号,因为预处理器只是完成简单的字符串替代,可能引起意想不到的问题。

     对于下面情况:

            int a=5, b=0;

            max(++a,b); //a的值增加了两次,因为++a>b,所以问号前后各一次,a=7,b=0

            max(++a,b+10);//a的值增加了一次,因为++a<b+10,返回b+10,a=6,b=0

      对于这种情况,使用inline函数替代:

            inline int max(int a,int b)

            {

              return a>b?a:b;

            }

      上述函数的缺点时只能处理int类型,改为模板如下:

            template<class T>

            inline const T& max(const T& a, const T& b)

            {

              return a>b?a:b;

            }

      这里使用引用传递,在T表示较大的类型时可以提高效率。 

相关阅读 更多 +
排行榜 更多 +
边境检察最后区域手机版下载

边境检察最后区域手机版下载

角色扮演 下载
酋长你别跑手游下载

酋长你别跑手游下载

休闲益智 下载
心动漫画app下载官方版

心动漫画app下载官方版

浏览阅读 下载