【共读Primer】9.[2.2] 变量 Page38

 

定义方式为在类型说明符后紧跟一个或多个变量名

int sum = 0, value,  // sum、value和units_sold都是int
   units_sold = 0;     // sum和units_sold初始值为0
Sales_item item;      // item的类型是Sales_item
// string 是一种库类型,表示一个可变长的字符序列
std::string book("0-201-78345-X"); // book 通过一个string字面值初始化

 

在我的文章中多次提到对象,一般而言,对象是指一块可以存储数据并有某种类型的内存空间。

也就是说,对象是有了实际地址的一个类型。

对象和类这个概念在初学的时候比较难理解,我举个简单的例子。

前两天我和女儿参加了一个手工饼干的活动,在活动中每个小朋友得到一块巴掌大的面团,然后有很多饼干的模具。
女儿就是讲面填入模具,然后将面挤压天面模具,然后将地面在操作台上压平。
那么形象的比方,我女儿得到的面团就是“内存”,模具就像是“类”,而挤压好的饼干就是“对象”。

对象创建时获得一个特定的值,我们叫做初始化。

// price先被定义并复制,随后被用于初始化discount
double price = 109.99, discount = price * 0.16;
// 调用函数applyDiscount,然后用函数的返回值初始化salePrice
double salePrice = applyDiscount(price,discount);

在C++中 初始化 赋值 不是一个概念。

虽然在很多语言中这两者的区别可以忽略,但是在C++一些特别的情况下是至关重要的。

 1 #include <iostream>
 2 
 3 int main()
 4 {
 5     // 下面的四中初识话方式可以达到相同的目的
 6     int units_sold1 = 0;
 7     int units_sold2 = {0};
 8     int units_sold3{0};
 9     int units_sold4(0);
10     
11     long double ld = 3.1415926536;
12     int a{ld}, b = {ld}; // 由于可能会丢失数据,编译器报错
13     int c(ld), d = ld;
14 }

 

初始化的工作是非常重要的。

大部分的类型会被进行默认初始化。

但是在类内部的内置类型不被初始化。如果使用这些没有初始化的变量,将导致不可预知的事情。

 

为了支持分离式编译过程,C++中可以对一个变量进行多次声明,但是只能进行一次定义

extern int i; // 声明i而不是定义i(它仅仅是一个声明,不能初始化)
int j;    // 声明并且定义j

上方代码中的i和j成为变量名或标识符。

标识符由字母、数组和下划线组成。必须以字母或下划线开头

命名的一般规范

1. 体现具体含义

2. 小写字母

3. 自定义类名大写开头

4. 多个单词拼接时,每个单词首字母大写

 

当然也需要避开系统已有的关键字,按首字母序的关键字列表:

alignas continue friend register true
alignof decltype goto reinterpret_cast try
asm default if return tpedef
auto delete inline short typeid
bool do int signed typename
break double long sizeof union
case dynamic_cast mutable static unsigned
catch else namespace static_assert using
char enum new static_cast virtual
char16_t explicit noexcept struct void
char32_t export nullptr switch volatile
class extern operator template wchar_t
const false private this while
constexpr float protected thread_local  
const_cast for public throw  

 

建议在变量的第一次使用时再去定义它。

因为变量含有一定的作用域,在不同作用域下可以使用相同的名称,但是可能代表不一样的类型。

 

posted @ 2018-08-03 10:02  chattyku  阅读(169)  评论(0)    收藏  举报