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
2
3
4
5
6
#include<iostream>//头文件

int main(){
std::cout<<"Hello World"<<std::endl;//流插入操作符
return 0;//返回值
}

注意:

  • 不准使用制表符和分页符等特殊字符,IDE中会将制表符设置并替换为四个空格
  • 函数的返回值必须明确列出,如果不写返回值编译器会默认为int

0-2 命名空间(namespace)

所谓namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。
一 :和<iostream.h>格式不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。 因此,当使用<iostream.h>时,相当于在c中调用库函数,使用的是全局命名空间,也就是早期的c++实现;当使用的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正确使用cout。
二: 由于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++代码,一个是为了支持新的标准。命名空间std封装的是标准程序库的名称,标准程序库为了和以前的头文件区别,一般不加”.h”。

有无命名空间的区别:

作用域运算符

在C ++中,作用域运算符为::,它可以用于以下目的:

1.当存在具有相同名称的局部变量时,要访问全局变量:::变量名访问全局变量

2.在类之外定义函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<iostream>  
using namespace std;

class A
{
public:

// 仅声名
void fun();
};

// 在类外定义函数使用 ::
void A::fun()
{
cout << "fun() called";
}

int main()
{
A a;
a.fun();
return 0;
}

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++使用一种叫做“流”的概念对屏幕、键盘或者文件进行输入输出操作


C++学习笔记0
https://chujian521.github.io/blog/2020/02/10/C-学习笔记0/
作者
Encounter
发布于
2020年2月10日
许可协议