C++对象与变量

 

目录

什么是对象:

名字的作用域

 变量声明和定义的关系

初始化 

默认初始化

 标识符

 C++关键字


什么是对象:

通常情况下,对象是指一块能存储数据并且具有某种类型的内存空间。

一些人仅在与类有关的场景下才使用 “对象”这个词。另一些人则已把命名的对象和未命名的对象区分开来,他们把命名了的对象叫做变量。还有一些人把对象和值区分开来,其中对象指能被程序修改的数据,而值(value)指只读的数据。


 

名字的作用域

不论在程序的什么位置,名字都会指向一个特定的实体:变量、函数、类型等。然而名字出现在程序的不同位置,也可能指向的是不同的实体。

作用域(scope)是程序的一部分,其名字有特定的含义。C++中大多数作用域都用花括号{}分隔。

同一名字在不同作用域中可能指向不同的实体。名字的有效区域始于名字的声明语句,以声明语句所在的作用域末端结束。


        名字main定义域所有花括号之外,它和大多数定义在函数体之外的名字一样拥有全局作用域(global scope),一旦声明之后,全局作用域的名字在整个程序的范围内都可以使用。名字若定义于main函数之内,从声明开始直到main结束都可以访问它,但出了main函数就不能了,因此说该变量拥有块作用域(block scope).


作用域可以被嵌套,包含着别的作用域的作用域被称为层作用域


 变量声明和定义的关系

        C++支持分离式编译把文件拆成若干个文件,每个文件可被独立编译。

将程序拆成多个文件之后,需要在文件间共享代码的方法。为了支持分离式编译,C++将声明与定义区分开来

声明(declaration)使得名字为程序所知,一个文件如果想使用别处定义的名字则必须包含那个名字的声明。

定义(definition)负责创建与名字关联的实体。

如果想声明一个变量而非引用它,就在变量前添加关键字extern,而且不要显式地初始化变量。

extern int i;//声明i而非定义i。

int i; //声明并定义i

任何包含了显示初始化的声明即成为定义。

变量能且只能被定义一次,但可以被多次声明。


初始化 

当对象在创建时获得了一个特定的值,我们说这个对象被初始化了。

注意:初始化并不等同于赋值!!

初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象当前的值擦除,而以一个新值代替。


如果想要初始化一个变量且初始值为0,有以下几种方式:

int a=0;

int a={0};

int a{0};

int a(0);

列表初始化:C++11加入了新东西

即用{}来初始化

这种初始化的好处是:如果使用列表初始化且初始值存在数值丢失的风险时,编译器将报错。

默认初始化

如果定义变量时没有指定初值,则变量被默认初始化,此时变量被赋予了“默认值”。默认值到底是什么由变量的类型决定,同时定义变量的位置也会对此有影响。

如果是内置类型未被显式初始化,它的值由定义的位置决定:

定义在任何函数体之外的变量被初始化为0

而在函数体内部的一般不被初始化


 标识符

C++的标识符(identifier)由字母、数字和下划线组成,其中必须以字母或下面的下划线开头。标识符的长度没有限制,但是对大小写很敏感。

同时,C++保留了一些名字供语言本身使用,这些名字不能被用作标识符。此外,定义在函数体之外的标识符不能以下划线开头。

变量命名规范:

1、标识符要能体现实际含义

2、变量名一般用小写字母(因为宏一般要大写)

3、用户自定义的类名一般以大写字母开头

4、如果标识符由多个单词构成,则单词间应有明显区分

 C++关键字

C++关键字

alignas continue friend register true

alignof decltype goto reinterpret_cast try asm default if return typedef 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

C++操作符替代名

and bitand compl not_eq or_eq xor_eq

and_eq bitor not or xor

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值