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

尽量以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的用法及区别

    Effective C++笔记1

    因此,应该使用 const、enum 和 inline 函数来代替#define。 * 使用 const 替换宏定义:const 可以定义常量,且可以在类内声明为 static,以确保它最多只有一个常量拷贝。 * 使用 enum 替换宏定义:enum 可以定义不...

    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 关键字可以提高代码的可读性、可维护性和安全性。本文将详细介绍 EFFECTIVE C++ 的第三条款:尽量使用 const 思维导图。 一、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 内存管理的建议 设计与说明的建议 继承与面向对象的设计 杂项

    (黑马c++) 个人学习笔记

    "黑马C++学习笔记" 本笔记涵盖了C++编程语言的基础知识点,包括变量、数据类型、运算符、控制结构等。 1. 变量和数据类型 ---------------- ### 1.1 第一个程序输出hello world * 使用`cout`语句输出hello world...

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

    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++的特性,...

Global site tag (gtag.js) - Google Analytics