C++ Primer 第二章 变量和基本类型

本小妞迷上赌 提交于 2020-03-30 16:10:30

2.3.5 声明和定义

为了让多个文件访问相同的变量,C++区分了声明和定义. 可以通过使用extern关键字声明变量名而不定义它.

extern int i; // declares but does not define i

int i; // declares and defines i

extern 声明不是定义,也不分配存储空间。事实上,它只是说明变量定义在程序的其他地方。

如果声明有初始化式,那么它可被当作是定义,即使声明标记为extern.只有当extern声明位于函数外部时,才可以含有初始化式.

2.4 const 限定符

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

非const变量默认为extern.要使const变量能够在其他的文件中访问,必须显式地指定它为extern.

2.5 引用

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

引用是一种复合类型,复合类型是指用其他类型定义的类型。

引用必须用与该引用同类型的对象初始化:(定义引用时必须初始化)

int &refVal3 = 10; //error:initializer must be an object

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

const int ival = 1024;

const int &refVal = ival;

int &ref2 = ival;//error: nonconst reference to a const object

const引用可以初始化为不同类型的对象或者初始化为右值.

const int &r = 42;//非const引用不合法,而const引用却合法.

2.6 typedef 名字

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

typedef double wages;

typedef int exam_score;

typedef wages salary;

typedef通常被用于以下三个目的:

为了隐藏特定类型的实现,强调使用类型的目的.

简化复杂的类型定义,使其更易理解.

允许一种类型用于多个目的,同时使得每次使用该类型的目的明确.

2.7 枚举

enum open_modes { input, output, append};

2.8 类类型

每个类都定义了一个接口和一个实现.接口由使用该类的代码需要招待的操作组成.实现一般包括该类所需要的数据.

定义Sales_item类

class Sales_item{

public:

private:

    std:string isbn;

    unsigned units_sold;

    double revenue;

};

定义变量和定义数据成员存在非常重要的区别:一般不能把类成员的初始化作为其定义的一部分.当定义数据成员时,只能指定名字和类型.

类是通过构造函数控制初始化.

class定义类,默认为private. 如果使用struct,则是public

2.9.1设计自己的头文件

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

头文件可以定义类、值在编译时就已知道的const对象和inline函数.

在头文件中定义这些实体,是因为编译器需要它们的定义来产生代码.

避免多重包含

#ifndef SALESITEM_H

#define SALESITEM_H

...

#endif

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!