Item-1: const,enum,inline替#define

# define AspectRatio 1.653  //不建议,可能预编译会遗失

const double AspectRatio = 1.653  //建议

当我们用常量替换#define时,有两个特殊情况值得说明:

  • 定义常量指针

    # define authorName "Fengww"   //不建议
    
    const char* const authorName = "Fengww" //指针和所指内容都是const, 弱建议 const std::string authorName("Fengww")  //利用string of c++, 强建议
    
  • class专属常量

对于define来说不存在类的专属,因为define就是一个全局的符号,所以这种变量的实现如下:

class Gameplayer{
private:
    static const int Num = 5; //常量的声明,但是这里赋值了,这种做法只适合静态整数变量
    int score[Num];
};

上面说的整数是一个可以在声明中赋值定义的特例,那么对于其他的类型变量,就必须用下面的方法来声明和定义

//类的声明放在头文件
class Gameplayer{
private:
    static const double Num ; //常量的声明,但是这里赋值了,这种做法只适合静态整数变量
};
// 类中成员的定义放在实现文件
const double Gameplayer::Num = 1.635

那么现在又存在另一个问题,就是我想向上面那样在类的声明中使用该变量怎么办?那么可以采用下面的enum的方面:

//类的声明放在头文件
class Gameplayer{
private:
    enum {Num = 5} ; // 让Num成为5的一个记号名称,可以
    int scores[Num];  //同样可以利用Num声明一个数组,但无法取得Num的地址
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 13,146评论 1 51
  • 1 让自己习惯 C++ 条款01:视 C++ 为一个语言联邦 将C++视为一个由相关语言组成的联邦而非单一语言。在...
    暗夜望月阅读 2,929评论 0 1
  • 2.变量和基本类型 3.字符串、向量和数组 4.表达式 5.语句 2.变量和基本类型 c++的算术类型: 一个ch...
    暮落晴空阅读 3,973评论 0 0
  • 起始 昨天晚上做了个很荒诞的梦,所以一大早就起来把这个梦给记录下来,怕它被我给遗忘掉。 梦的内容...
    笔得潘阅读 1,670评论 0 3
  • 清晨睁开惺忪的睡眼 用心谛听窗棱外的诗篇 朦胧的美感 可曾与你的梦想遇见 清晨霞光溢满天边 用笔轻描一副温情的画卷...
    深深浅浅间阅读 1,378评论 0 3