C++ Primer学习笔记5 变量和基本类型(const限定符、引用、typedef名字、枚举)

时间:2022-12-18 20:22:17

1const限定符

定义一个变量代表某一个常数存在严重的问题,变量可以被修改,如果用const限定符可以解决此问题,把一个对象转换为常量。

const  int  bufSize = 512;

因常量在定义后不可以修改,所以在定义时必须初始化。

const  string  hi=”hello”

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

2、引用

引用就是对象的另一个名字。在实际应用中,引用主要用作函数的形参。

引用是一种复合类型,通常在变量名前加上“&”符号来定义。

每一种引用类型都“关联到”某一其他类型。不能定义引用类型的引用,但可以定义任何其他类型的引用。

int  ival = 1024;

int  &refVal = ival;

引用是绑定的对象的另一个名字,作用在引用上的所有操作事实上就是作用在该引用绑定的对象上。

refVal +=2;

refVal 指向的对象ival2

引用在定义时必须初始化,当引用初始化后,只要该引用存在,它就保持绑定到初始化时指向的对象。不可能将引用绑定到另一个对象。

const 引用

const 引用是指向const 对象的引用:

const  int  ival = 1024;

const  int  &refVal = ival;        //ok

int  &ref2 = ival;              //error

const 引用是指向const 对象的引用,非const引用是指向非const类型的引用。

const引用只能绑定到与该引用同类型的对象。

3typedef名字

typedef用来定义类型的同义词:

typedef  double  wage

wage  hourly,  weekly;

4、枚举

枚举为某些属性定义一组值。枚举的定义包括enum,其后是一个可选的枚举类型名,和一个用花括号括起来用逗号分开的枚举成员列表

enum  openModes  {input, output, append};    //input=0,  output=1, append=2

默认地,第一个枚举成员赋值为0,后面的每个成员比前面的大1

每个枚举成员都是常量,可以为一个或多个成员赋值。

enum  Forms {shape=1, sphere, cylinder, polygon};     //  sphere=2, cylinder=3, polygon=4

enum  Points {point2d=2, point2w, point3d=3, point3w}  //point2w=3, point3d=3, point3w=4

不可以改变枚举成员的值,枚举成员本身是一个常量表达式。

5、类类型

class关键字开始,其后是该类的名字标识符。类体位于花括号内,花括号外必须有分号

class Sales_item
{
public:
private:
string isbn;
unsigned units_sold;
double revenue;
};

定义变量和定义类中的数据成员区别:一般不能把类成员的初始化作为其定义的一部分。当定义数据成员时只能指定数据成员的类型和名字。类不是在定义时初始化数据成员,而是通过构造函数。

访问标号:public部分定义的成员可以在程序的任何地方访问

          private部分定义的成员只可以在类内部使用

如果使用class关键字来定义类,那么定义在第一个访问标号前的成员都隐式指定为private;如果使用struct关键字,那么这些成员都是public

6、编写自己的头文件

C++支持分别编译,这样程序可以由多个文件组成。可以将类的定义放在一个头文件中,类的成员函数放在一个源文件中,像main这样使用类对象的函数放在另一个源文件中。任何使用该类的源文件都必须包含定义该类的头文件。

头文件为相关声明提供了一个集中存放的位置。头文件一般包含类的定义、extern变量的声明和函数的声明。

头文件用于声明而不是用来定义。

头文件不应该包含定义这一规则有三个例外:类的定义、值在编译时就已经知道的const对象和inline函数。