变量和基本类型二

1.声明和定义

为了让多个文件访问相同的变量,C++区分了声明和定义。

定义:用于为变量分配存储空间,同时为变量指定初始值。一个程序中变量有且只有一个定义。

1.1  extern

   声明:用于向程序表明变量的类型和名字。定义也是声明,定义变量时声明了它的类型和名字。可以使用extern关键字声明变量名而不定义它。extern声明不是定义,也不分配存储空间。事实上,他只是说明变量定义在程序的其他地方。注意:程序中变量可以声明多次,但只能定义一次。只有生命也是定义时,声明才能初始化。只有当声明位于函数外时,才可以含初始化式。

 

用法:任何在多个文件中使用的变量都需要有与定义分离的声明。在这种情况下,一个文件含有变量的定义,使用该变量的其他文件则包含该变量的声明(不是定义!)

1.2 名字的作用域

1全局作用域:定义在函数外部的具有全局作用域,可以在定义该变量的文件中的任何地方访问

2局部作用域:在函数中定义,则只能在这个函数中使用,当函数外,则不能使用

3语句作用域:只能在for语句中使用,而不能在其他地方使用。

  

 定义在全局作用域中的名字可以在局部作用域中使用。若全局作用域的变量名字和局部作用域中的变量名字相同,则局部变量的定义屏蔽全局变量的定义,当局部作用域结束,全局变量再恢复。

编程好习惯提示:

1在函数内部定义一个与函数可能会用到的全局变量同名的局部变量是不好的编程习惯。局部变量最好使用不同的名字

2.通常把一个对象定义在他首次使用的地方是一个良好的办法。

1.3 const限定符

 1.3.1定义const对象 

  const限定符把一个对象转换成一个常量(不可修改的)。因为常量在定义后就不可修改,所以定义时必须初始化。

 1.3.2 const对象默认为文件的局部变量

 在全局作用域中定义非const变量时,他在整个程序中可以访问。如下图:

 

但是const变量不同,默认情况下,全局作用域中的const变量属于定义该变量的局部变量,这意味着该变量只能在定义该文件中被使用,不能被其他文件访问。这里我们需要指定const变量为extern,这样整个程序中访问const对象。具体如下图:

 

总结:非const变量默认为extern ,要使const变量弄够在其他的文件访问,必须显式的指定他为extern

2.引用

引用就是对象的另一个名字。实际中,引用主要用于函数的形参。引用是一种复合类型(变量名前加&)

复合类型:是指用其他类型定义的类。在引用情况下,每一种引用类型都”关联到”某一其它类型。

注意:不能定义引用类型的引用,同时引用必须用同类型的对象进行初始化(初始化是指明引用志向哪个对象的唯一方法)。当引用初始化后,就只能保持绑定到初始化时的对象,不能将引用绑定到另一个对象

2.1 引用是别名

  引用只是他绑定对象的一个别名,操作引用实际上都是在操作绑定对象。

2.2  const引用

  const引用是指向const对象的引用。 const引用可以指向const对象,也可以指向非const对象,而非const引用可以绑定到非const对象,但不能绑定到const对象上。

  同时需要注意:const引用可以绑定到不同但相关的类型的对象或绑定到右值,非const引用则必须绑定到与该引用同类型的对象。例子如下:

 

3 类类型

  C++通过定义类来自定义数据类型。类定义了该类型的对象的数据和该类的对象可以执行的操作。

  每个类都定义了一个接口实现

  接口:这个类都提供哪些操作

  实现:定义并实现操作。

 定义类时通常先定义该类的接口(该类所提供的操作)。类体可以为空,类体定义了组成该类型的数据和操作。操作称为成员函数。数据称为成数据成员。定义变量和定义数据成员有很大差别:一般不能把类成员的初始化作为其定义的一部分。就是说只能指定数据成员的名字和类型,类为数据成员初始化专门提供了方法:构造函数。

  访问标号(public,private,protect)负责控制访问。类的成员函数可以使用类的任何成员,不管其访问级别。访问标号(public,private,protect)可以多次出现在类定义中。给定的访问标号(public,private,protect)应用到下个访问标号(public,private,protect)出现为止。

public:定义的成员可以在程序中的任何部分访问。一般把成员函数放在public

private:不是类的组成部分不能访问private成员,一般把数据成员放在private

注意:在classstruct关键字定义类的唯一差别在于默认访问级别:默认情况下,class的成员为private,struct的成员为public

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值