这是我参与11月更文挑战的第2天,活动详情查看:2021最后一次更文挑战
变量的初始化
const
const在C++和在JS中类似,都是代表初始化一个不可变的量,
const int Months = 12;
\\ 下面的写法将变量固定为undefined
const int year
const与#define
const与#define看起来似乎是差不多的,结果上来看都是定义了一个不可变的量,阅读了一些讨论const与#define的文章中,得到了一个较确切的说法:const定义的变量只有类型为整数或枚举,且以常量表达式初始化时才能作为常量表达式。其他情况下它只是一个 const 限定的变量,不要将与常量混淆。(这句话要深究一下,何为const 限定的变量?)
谈到与#define的区别,const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是像#define一样给出的是立即数。
const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝。
更多讨论见github.com/Light-City/…
类型转换
这个概念对于JS使用者来说并不陌生,毕竟隐式类型转换在JS中很常见,事实上,我在阅读C++ Premier Plus时,就有意识地在寻找C++对于类型转换是如何处理的。
事实上,C++ Premier Plus原文这样说:
- C++ converts values when you assign a value of one arithmetic type to a variable of another arithmetic type.
- C++ converts values when you combine mixed types in expressions.
- C++ converts values when you pass arguments to functions
第一条和第二条挺好理解。第一条,当你将一个类型的值赋给另一个类型的变量时,这个类型的值必须要被转化为变量的类型(这其中会造成精度损失等问题,但是没办法,谁叫你这么干了呢)。第二条,也是在其他语言实践中常常碰到的,在进行
+等操作时,对于不同类型的变量必须做转换。第三条,我虽然有一定的认识,但是还是不能凭以前的编程经验就理解透彻,留到函数的章节再细究吧。