?? ?? ?? ?? ?? 火速猛戳订阅??《C++要笑着学》 ?? 趣味教学博客 ?? ?? ?? ?? ??
写在前面:
本章将正式开始 C++ 的学习,将深入浅出地讲解。本篇将以HelloWorld 开始,以 HelloWorld 结束。通过这段代码,讲解C++中的命名空间和输入与输出。话不多说,让我们开始吧!
Ⅰ. 初探 HelloWorld
“深”入浅出
所有的伟大,都源于一个勇敢的开始。学习一门语言当然是要从HelloWorld 开始!
① 首先打开我们的编译器,我用的是 VS2077 VS2022:
打开编译器创建完新项目后,右键源文件,点击 “添加新建项” ,名称我们就取为 test.cpp,这样我们的代码就能很好地创建出来了:
?? 创建完毕后,我们就可以开始打代码了:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello,World!" << endl;
return 0;
}
如果你不知道 using namespace、cout、endl 这些是什么,这都没有关系,我们下面会慢慢讲解,不用着急。
?? 完成后运行一下代码:
成功打印出来了。
?? 我们再试一试C语言的 HelloWorld:
#include <stdio.h>
int main()
{
printf("Hello, World!");
return 0;
}
?? 运行结果如下:
?? 我们发现,也是可以输出结果的。因为 C++ 是 C语言的超集。
好了,我们已经精通C++ 了,本专栏完结撒花!
Ⅱ. 关键字
0x00 关键字
C++ 共计 63 个关键字,其中包括 C 语言的 32 个关键字。
这里我们只是看一下 C++ 有多少关键字,不会对关键字进行具体的讲解,我们后续都慢慢会学到的。这里把关键字表列出来,只是为了能够混个眼熟,我们命名时要避开这些关键字!
C++98 关键字
Ⅲ. 命名空间
0x00问题引入
在C/C++中,变量、函数和类都是大量存在的,这些变量、函数和类的名称都会存在于全局作用域中,这么一来就会导致命名的冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染。我们刚才 HelloWorld 代码中的 namespace 的出现,就是针对这个问题的。
?? 为了能够让大伙理解命名空间的存在是多么的合理,我们来故意踩一下命名冲突的坑。
在 stdlib 库中有一个生成随机数的函数rand() ,相信大家都认识,但是我们假装某个人不知道 stdlib 库中有一个叫 rand 的函数存在,因此在定义变量时给变量取名为 rand 。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int rand = 233;
printf("%d
", rand); // 这里到底是打印我们自己定义的rand,还是stdlib里的?
return 0;
}
我们知道,#include 包含头文件,头文件里的内容是会被展开来的。当展开头文件时,stdlib 库中有一个叫 rand 的函数,我这里又定义了一个叫 rand 的变量,此时就冲突了!
冲突了,那么问题来了,我们这里printf打印出来的会是什么呢?
编译器的寻找规则: 局部找 → 全局找 → 找不到(报错)。
或许他打印出什么并不重要,但是大家应该能够体会到命