【共读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++一些特别的情况下是至关重要的。

#include <iostream>

int main()
{
    // 下面的四中初识话方式可以达到相同的目的
    int units_sold1 = 0;
    int units_sold2 = {0};
    int units_sold3{0};
    int units_sold4(0);

    long double ld = 3.1415926536;
    int a{ld}, b = {ld}; // 由于可能会丢失数据,编译器报错
    int c(ld), d = ld;
}

这里写图片描述
初始化的工作是非常重要的。

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

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

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

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

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

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

命名的一般规范

  1. 体现具体含义

  2. 小写字母

  3. 自定义类名大写开头

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

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

-----
alignascontinuefriendregistertrue
alignofdecltypegotoreinterpret_casttry
asmdefaultifreturntpedef
autodeleteinlineshorttypeid
booldointsignedtypename
breakdoublelongsizeofunion
casedynamic_castmutablestaticunsigned
catchelsenamespacestatic_assertusing
charenumnewstatic_castvirtual
char16_texplicitnoexceptstructvoid
char32_texportnullptrswitchvolatile
classexternoperatortemplatewchar_t
constfalseprivatethiswhile
constexprfloatprotectedthread_local
const_castforpublicthrow

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值