`
tibaloga
  • 浏览: 870198 次
文章分类
社区版块
存档分类
最新评论

尽量以const,enum,inline代替#define——effective c++学习笔记

 
阅读更多

const:

通俗的讲,就是一编译器代替预处理器。

class的专属常量,且只有一份拷贝,需要在类内定义:

static const int i = 0;

这样不会提示出错。如果定义为static int i = 0 ;则编译器会提示:“错误:ISO C++ 不允许在类内初始化非常量静态成员

enum:

typedef enum Type

{

One,

Two,

Three,

};

Type T = One;

对于上面的定义,OneTwoThree是不占内存空间的,只有T才占内存空间。

One只是一个编译器的标号

int v[One];正确;

int v[T];错误;

对于单纯常量,最好以const对象或者enums替换#define

对于形似函数的宏,最好改用inline函数替换#inline

分享到:
评论

相关推荐

    const #define inline

    const #define inline的用法及区别

    c++ 尽量不要使用#define 而是用const、enum、inline替换。

    例如:这里程序文件开头有如下#define语句 代码如下: #define N 10 #define PI 3.14 #define MAX 10000 #define Heigth 6.65 … … 假设这里程序运行出错误,而且就是在我们使用这些常量有错误,此时编辑器应该会抛...

    C语言中const与#define的区别

    本文主要介绍了C语言中const与#define的区别,希望对你的学习有所帮助。

    Effective_C++_笔记

    1.2 条款02:尽量以const,enum,inline替换#define 这个条款或许可以改为“宁可用编译器替换预处理器”。 通常C++要求你对所使用的任何东西提供一个定义式,但如果它是个class专属常量 又是static且为整数类型...

    C语言 #define用法集锦[修正版]

    这样的定义看起来类似于普通的常量定义CONST,但也有着不同,因为define 的定义更像是简单的文本 替换,而不是作为一个量来使用,这个问题在下面反映的尤为突出。 2.define的“函数定义” define 可以像函数那样接受...

    C++中const与#define的利弊分析

    C++中const与#define的区别如下: 用#define MAX 255定义的常量是没有类型的,所给出的是一个立即数,编译器只是把所定义的常量值与所定义的常量的名字联系起来,define所定义的宏变量在预处理的时候进行替换,在...

    浅谈C++中的几个关键字static,const,inline.doc

    浅谈C++中的几个关键字static,const,inline.doc 浅谈C++中的几个关键字static,const,inline.doc

    EffectiveC++终稿44__tagged_2019-06241

    Effective C++目 录一.让自己习惯C++ 1条款02:尽量以const,enum,inline替换#define 11)以const替换#defin

    Effective C++ 中文版

    条款02:尽量以const,enum,inline替换#define 条款03:尽可能使用const 条款04:确定对象被使用前已先被初始化 2.构造/析构/赋值运算 条款05:了解C++默默编写并调用哪些函数 条款06:若不想使用编译器自动成生...

    EFFECTIVE C++ 条款03 尽量使用const 思维导图

    EFFECTIVE C++ 条款03 尽量使用const 思维导图

    C语言编程技巧 关于const和#define的区别心得

    尽量用const和inline而不用#define这个条款最好称为:“尽量用编译器而不用预处理”,因为#define经常被认为好象不是语言本身的一部分。这是问题之一。再看下面的语句:

    Effective C++

    条款1:尽量用CONST和INLINE而不用#DEFINE 条款2:尽量用而不用 条款3:尽量用NEW和DELETE而不用MALLOC和FREE 条款4:尽量使用C++风格的注释 2、内存管理 条款5:对应的NEW和DELETE要采用相同的形式 条款6:析构函数里对...

    C/C++中的typedef和#define详解

    C/C++中的typedef和#define 前言:  在C/C++中,我们平时写程序可能经常会用到typedef关键字和#define宏定义命令,在某些情况下使用它们会达到相同的效果,但是它们是有实质性的区别,一个是C/C++的关键字,一个是C...

    Effective c++

    提高编程效率的50条建议 条款1:尽量用const和inline而不用#define 条款2:尽量用而不用 条款3:尽量用new和delete而不用malloc和free 内存管理的建议 设计与说明的建议 继承与面向对象的设计 杂项

    饭客钻石-带网络验证带压力测试

    define RECALC_PREV_PRESSED 0 #define RECALC_NEXT_PRESSED 1 #define RECALC_ITEM_SELECTED 2 #define RECALC_RESIZED 3 #define RECALC_FIRST_PRESSED 4 #define RECALC_LAST_PRESSED 5 #define RECALC_EDIT_...

    C++学习笔记、常见面试知识点.zip

    C++学习笔记和常见面试知识点,C++11特性,包括多态、虚表、移动语义、友元函数、符号重载、完美转发、智能指针、const和static、数组指针和指针数组、struct内存对齐、enum和union关键字等等。帮助了解C++的特性,...

    PLC PPI 源程序

    #define UCHAR_CODE const unsigned char #endif #ifndef uchar_code //**表示数据保存在程序存储器中 #define uchar_code const unsigned char #endif #ifndef UINT_CODE //**表示数据保存在程序存储器中 #define...

    跟我一起学C++

    为什么要学习C++ 编程语言的需求总结为四个:效率(efficiency),灵活(flexibility),抽象(abstraction),生产力(productivity)。C语言注重前两者,C++注重前三者,JAVA、.net这些注重后两者。 2 从C到C++(一) 2.1 ...

Global site tag (gtag.js) - Google Analytics