《C++ Primer Fifth Edition》 阅读及学习笔记二

17 January 2015


最基本的通用功能包括:

C++ 是静态类型语言,类型在编译阶段就检查完毕。因此,编译器必须知道每个程序中每个名称的类型。

Chapter 2. Variables and Basic Types(变量和基本类型)

2.1. Primitive Build-in Types(基本内建类型)

2.1.1. Arithmetic Types(算术类型)

算术类型分为两种:整型(integral types) 以及 浮点型(floating-point types)

2.6. Defining Our Own Data structures(定义我们自己的数据结构)

数据结构是组织数据和使用该数据策略的一种方法。第一方式如下:

struct Sales_data {
	std:: string bookNo;
	unsigned units_sold = 0;
	double revenue = 0.0;
};

struct在定义结束的时候一定要跟上分号”;”。

可以通过如下方式定义这个类型的变量:

struct Sales_data { /* ... */ } accum, trans, *salesptr;
// equivalent, but better way to define these objects
struct Sales_data { /* ... */ };
Sales_data accum, trans, *salesptr;

在C++11的新标准中,我们可以给数据成员(data member)提供一个类中的初始化器(in-class initializer),当我们创建对象的时候,该类中初始化器将用于初始化数据成员。没有初始化器的成员被默认初始化。

2.6.3 Write Our Own Head Files(实现自己的头文件)

A Brief Introduction to the Preprocessor(预处理器的简单介绍)

最通用的让多次引用头文件安全的技术就是依赖于预处理器。C++的预处理器继承自C语言,是一个在编译前改变源文件和程序的程序。

当预处理器看到“#include”时,将指定的头文件的内容替换到该位置。

C++程序通过使用预处理器来实现头文件保护,头文件保护依赖于预处理器的变量。

预处理器的变量包含两种状态:已定义以及未定义,预处理器变量并不遵循C++的作用域规则,如代码:

#ifndef SALES_DATA_H
#define SALES_DATA_H
#include <string>
struct Sales_data {
std::string bookNo;
unsigned units_sold = 0;
double revenue = 0.0;
};
#endif

Defined Terms(术语)