C++学习笔记0
一直想学C++,一直没空,现在闲下来了学习下。
0-0 C++源文件和编码规范
1. 代码文件
- world.h 是头文件
- world.hpp 是头文件
- world.cpp 是源文件
- world.cxx 是源文件
2. 编码规范
为什么要使用编码规范?显然是为了让程序具有更好的可读性
谷歌开源项目风格指南:https://github.com/zh-google-styleguide/zh-google-styleguide
0-1 Hello World
1 |
|
注意:
- 不准使用制表符和分页符等特殊字符,IDE中会将制表符设置并替换为四个空格
- 函数的返回值必须明确列出,如果不写返回值编译器会默认为int
0-2 命名空间(namespace)
所谓namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。
一 :
二: 由于namespace的概念,使用C++标准程序库的任何标识符时,可以有三种选择:
1、直接指定标识符。例如std::iostream而不是iostream。完整语句如下: std::cout << std::hex << 3.4 << std::endl;
2、使用using关键字。 using std::cout; using std::endl; using std::cin; 以上程序可以写成 cout << std::hex << 3.4 << endl;
3、最方便的就是使用using namespace std **(一般不用)**; 例如: using namespace std;这样命名空间std内定义的所有标识符都有效(曝光)。就好像它们被声明为全局变量一样。那么以上语句可以如下写: cout <<hex << 3.4 << endl;**因为标准库非常的庞大,所以程序员在选择的类的名称或函数名时就很有可能和标准库中的某个名字相同。**所以为了避免这种情况所造成的名字冲突,就把标准库中的一切都被放在名字空间std中。但这又会带来了一个新问题。无数原有的C++代码都依赖于使用了多年的伪标准库中的功能,他们都是在全局空间下的。所以就有了<iostream.h>和
有无命名空间的区别:
作用域运算符
在C ++中,作用域运算符为::,它可以用于以下目的:
1.当存在具有相同名称的局部变量时,要访问全局变量:::变量名
访问全局变量
2.在类之外定义函数:
1 |
|
3.访问一个类的静态变量:类名::静态变量名
4.如果存在多继承,两个祖先类存在相同的变量名,可以使用作用域运算符进行区分
0-3 编译C++程序
步骤如下:
0-4 处理错误
4.1 错误分类
- Syntax Error(语法错误)
- Runtime Error(运行时错误)
- Logic Error (逻辑错误)
语法错误就是违反了编程语言的语句形式或者使用规则,一般由编译器检查指出;运行时错误是指程序运行时,遇到一个无法执行的操作,一般编译器无法检查指出;逻辑错误是指程序运行结果与预期的正确结果不一致,编译器无法检查指出。
4.2 常见语法错误
- 写错关键字
- 遗漏分号
- 遗漏括号
- 遗漏引号
- 全半角中英文混写
- 命名空间引发的错误
0-5 输入和输出
5.1 输入输出分类
- 标准IO
- 文件IO
- 字符串IO
- 网络IO
5.2 C++的输入和输出
C++使用一种叫做“流”的概念对屏幕、键盘或者文件进行输入输出操作