一、语言形象化图解
二、参考书籍
The C++ Programming language(有中译本)
作者就是C++之父 Bjarne Stroustrup
作为C++字典来查阅
The C++ Standard Library :A Tytorial and Reference
学习C++库函数所用
三、文件后缀
- 头文件
例如 world.h
特别的:linux上 world.hpp - 源文件
例如 world.cpp
特别的:linux上 world.cxx
四、今日编码规范
一、
不准使用“制表符”和“分页”等特殊字符
因此,在IDE中将“制表符”(Tab键)设置并替换成4个空格
二、
函数必须总时将返回值明确列出
若不写返回值,编译器会默认返回int 不同编译器决策不同,有的会直接报错
五、C++标准库头文件
规定C++头文件里没有.h
例如#include<iostream>
六、namespace(重点)
命名空间namespace
例如:
#Include<iostream>
Int main(){ //std就是一个命名空间
std::cout << “Hello World!”<< std::endl;
//具体使用就是xxx::yyy
//xxx就是命名空间的名字 yyy就是此命名空间中的变量
return 0;
}
namespace干嘛用的,为什么要有?
命名空间是用来组织和重用代码的。如同名字一样的意思,之所以出来这样一个东西,是因为人类可用的单词数太少,并且不同的人写的程序不可能所有的变量都没有重名现象,对于库来说,这个问题尤其严重,如果两个人写的库文件中出现同名的变量或函数(不可避免),使用起来就有问题了。
举个例子:
在一个年级中,有两个人都叫 张三
当开年纪大会时,年级主任在讲台上点名
年级主任:张三!
此时两个张三都会喊到
那年级主任到底喊的是哪个张三?
现在我们引入命名空间
将两个张三分为一班张三,二班张三
然后年级主任在讲台上点名
年级主任:张三!
此时两个张三就会疑惑了,干脆懒得理年纪主任了
年级主任脸一红知道自己说话意思不明
年级主任赶紧掏出月光宝盒,“时间回退!”
年级主任重新上台:“我先声明一下,我等下点的都是一班人的名字!”//声明命名空间
“…张三!”
这个时候一班的张三就会回应,二班的张三就不会应答
写成代码就是
#include<iostream> //“我先声明一下,我等下点的都是一班人的名字!”
using namespace std;
Int main(){
cout << “Hello World”<<endl; //张三!
return 0;
}
“学到了!这就去对线!”
“别去!他们坑多!”
强烈不建议使用上面using namespace std;这种用法
举个例子:
还是之前那个年级主任点名
“先声明,我点的是一班人的名字”
“另外,我也要点二班人的名字”
“张三!”
那这样两个张三又懵逼了
//假设现在有两个命名空间a,b,他们俩个命名空间中都有一个98k的变量名字
//小明聪明一世糊涂一时,不知道b里面也有个98k的变量名字
小明写了如下代码
#include<iostream>
using namespace a;
using namespace b;
int main(){
return 98k;
}
写完给编译器一看,编译器:WDNMD,这98k说的是哪个98k?爪巴!
所以说建议写成如下形式
#include<iostream>
using std::cout;
using std::endl;
int main(){
cout << “Hello World” << endl;
return 0;
}
要用什么就using什么
最规范的写法
#include<iostream>
Int main(){
std::cout<<”Hello World!”<<std::endl; //老写std::好麻烦(qwq)
return 0;
}
七、代码编译运行过程
Compiler:编译器
Precompile:预编译,预处理 ps:负责代码文本的替换工作(include<xxx>等)
Compile:编译生成Object file(目标文件) 如:”abc.obj”
Link:链接,将目标文件外加库连接为一个可执行的文件
可执行代码:此时文件已经是可执行文件,如”abc.exe”