系统学习下C++,参考 C++ Primer 第5版 中文版带书签的
链接: https://pan.baidu.com/s/1-qFSz1W4vsfxHoPH0QOoxA 提取码: h268
编译运行C++程序
1、使用PC机上的编译器IDE集成开发环境
2、运行GNU编译器,g++ -o a.o a.cpp
初识输入输出
1、iostream库包含两个基础类型istream和ostream,分别表示输入流和输出流。
2、处理输入我们使用cin的istream类型的对象,对于输出,我们使用cout
int v1 = 0;
std::cin >> v1;
std::cout << v1 <<std::endl;
前缀std::指出名字cout和endl是定义在名为std的命名空间。
也可以在main函数前面加一句using namespace std;
std::cout就可以直接写成cout;
类简介
类机制是C++最重要的特性之一。前面的istream和ostream都是类定义在iostream库中
变量和基本类型
C++定义了一套包括算术类型、空类型在内的基本数据类型。算术类型包含了字符、整形、布尔值和浮点数,空类型不对应具体的值,仅用于一些特殊的场合,例如当函数不返回任何值时使用空类型作为返回类型。
1、类型转化:
将对象从一种给定的类型转换为另一种相关类型。
bool b = 42; //b为真
int i = b; //i的值为1
i = 3.14; //i的值为3
double pi = i; ///pi的值为3.0
unsigned char c = -1; //假设char占8bit,c的值为255
signed char c2 = 256; //假设char占8bit,c2的值是未定义的
注意:确保无符号数不会小于0
2、变量
变量能且只能被定义一次,但是可以被多次声明。
extern int i; //声明i而非定义i
int j; //声明并定义j
extern double pi = 3.1416; //定义
*标识符
C++的标识符由字母、数字、下划线组成,其中必须以字母或下划线开头。对大小写敏感
*作用域
作用域是程序的一部分,其中名字有特殊的含义,大多数作用域都以花括号分隔。
嵌套的作用域,被包含的作用域称为内层作用域,包含着别的作用域的作用域称为外层作用域。
允许内层作用域重新定义外层作用域已有的名字。
复合类型:
指基于其他类型定义的类型,如引用和指针
引用:
引用类型引用另外一种类型,通过将声明符写成&d的形式来定义引用类型,其中d声明的变量名。
如,int ival = 1024;
int &refval = ival; //refval指向ival(是ival的另一个名字)
int &refval2; //报错:引用必须被初始化
引用就相当于一个别名。
指针:
是“指向”另外一种类型的复合类型,与C语言中的类似。
空指针:
列出几个生成空指针的方法
int *p1 = nullptr; //C++11新标准刚引入的一种方法,nullptr是一种特殊类型的字面值
int *p2 = 0;
int *p3 = NULL; //NULL是一个预处理变量,在头文件cstdlib中定义,值为0
注意*是用来修饰p1变量的,如int *p1,p2;//p1是指向int的指针,p2是int型的。
decltype类型指示符
C++11新标准引入了第二种类型说明符,它的作用是选择并返回操作数的数据类型。
如,decltype(f()) sum = x; //sum的类型就是函数f的返回类型