C++ Primer
再次重温下C++ Primer
第一章、开始
1、GNU编译器使用g++
$ g++ -o prog1 prog1.cc
2、
while(std::cin >> value)
- 使用一个istream作为条件时,如果遇到Eof,或无效输入(不匹配类型)则判断为假,跳出
第二章:变量和基本类型
一、基本内置类型
1、如何选择类型
- 明确知道不可能为负,定义为unsigned型
- 整数运算使用int型
- 浮点运算使用double型
- 如果需要一个不大的整数,要明确是signed char 或者unsigned char
2、含有无符号类型的表达式,在与有符号int相加时会默认转换为无符号型运算
- 所以这里要注意不要使用这种无符号类型表达式作为判断,可能会进入无限循环
- 切勿混用符号型和无符号型
二、变量
1、初始化 != 赋值
int a = 1; //初始化 int b; b = 2; //赋值
- 建议初始化每一个内置类型的变量
2、变量的声明和定义
int i; //声明并定义;默认初始化为0 extern int j; //声明未定义
- 函数体内部,初始化一个extern关键字的变量,将引发重复定义的错误(即使全局没有定义该变量)
- main函数也是函数,所以main函数中也不能初始化一个extern关键字的变量
3、变量名的规范
- 变量名一般用小写字母
- 自定义的类名一般大写字母开头
- 如果标识符由多个单词组成,使用驼峰法
- 函数和方法用动词开头,首字母大写匈牙利法
4、变量的定义,C++里在被用到的地方前定义就可以,C中必须在函数开头就定义好
5、符合类型(int *, int &):指针和引用
- 引用就是是绑定另一个变量,可以简单理解为变量的另一个名字,真实可能是 *const的指针
- 引用本身不是一个对象,所以不能定义引用的引用(int &&i不行)
- 引用的类型必须与要绑定的对象严格匹配
- 引用不是对象, 没有实际地址,不能定义指向引用的指针
6、const限定符
- const对象一旦创建后就不能再改变,所以const对象必须初始化
- const变量不管是声明还是定义都添加extern,这样只需要定义一次就可以了
7、初始化和const的引用
- 初始化常量引用时,允许任意表达式作为初始值,只要该表达式能被转换成引用的类型就可以:引用使用了中间临时变量
8、顶层const和底层const
int i = 0; const int *const p = i; //第一个为底层,第二个为顶层 const int &r = i; //用于声明引用的const都是底层const
- = 号的左边必须是可改变的左值
- =号的左右两边可以把限制小的赋值给限制大的(const越多限制越大)
9、类型别名:typedef = using
10、auto:让编译器自动识别,但是必须有初始值;
11、decltype:通过表达式来推出变量的类型
12、防止头文件的重复包含(VS中可以使用#pragma once)
#ifndef SALES_DATA_H #define SALES_DATA_H int main() { .... } #endif