> 文档中心 > 一篇领进C++

一篇领进C++

目录

1. C++关键字(C++98)🚀

2. 打印hello world 🚀

3. C++输入&输出 🚀

4. 命名空间 namespace 🚀

4.1 解决命名冲突 🚀

4.2 命名空间的特性 🚀

4.3 命名空间的使用 🚀

5. using 使用 🚀

1. 如果不使用using 🚀

3. 释放特定命名空间 🚀

​3.2 释放命名空间的 🚀

6. 缺省参数 🚀

总结一下 🚀

7. 函数重载 🚀


作者已经停更很久了,是因为最近在学C++,初阶的数据结构算是告一段落了,终于到了作者心心念念的C++,然后本篇文章就来个入门哈。

C语言入门篇进阶篇深剖篇都整理在这里了哈。然后这里个人主页,比点头像更好找文章哈。


作者和朋友建立的社区:非科班转码社区-CSDN社区云💖💛💙

期待hxd的支持哈🎉 🎉 🎉


最后是打鸡血环节:改变的确很难,但结果值得冒险,拿出点勇气来。路还很长,现在才刚开始而已。过去无可挽回,未来可以改变。🚀 🚀 🚀 

1. C++关键字(C++98)🚀

老规矩,先看关键字。 C++ 总计 63 个关键字, C 语言 32 个关键字 ps :下面我们只是看一下 C++ 有多少关键字,不对关键字进行具体的讲解。后面我们学到以后再细讲。

2. 打印hello world 🚀

不管是什么的入门,作者都还是喜欢从 hello world 开始,hello world 虽然简单,但每每令我心生敬畏,这是对语言的,对计算机的求知若渴的感觉。

里面不懂的下面会解释哈。

3. C++输入&输出 🚀

简单说就是 cin 是输入 cout 是输出  endl 是换行 然后c++不用像c用%d什么的,可以直接输出

1. 使用 cout 标准输出 ( 控制台 ) cin 标准输入 ( 键盘 ) 时,必须 包含 头文件 以及 std 标准命名空间。 注意:早期标准库将所有功能在全局域中实现,声明在 .h 后缀的头文件中,使用时只需包含对应头文件即可,后来将其实现在std 命名空间下,为了和 C 头文件区分,也为了正确使用命名空间,规定 C++ 头文件不带.h ;旧编译器 (vc 6.0) 中还支持 格式,后续编译器已不支持,因此 推荐 使用 +std 的方式。

2. 使用C++输入输出更方便,不需增加数据格式控制,比如:整形--%d,字符--%c

#include using namespace std;int main(){ int a; double b; char c;  cin>>a; cin>>b>>c;  cout<<a<<endl; cout<<b<<" "<<c<<endl; return 0; }

4. 命名空间 namespace 🚀

 在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染namespace关键字的出现就是针对这种问题的。

我们可以自己定义一个命名空间,命名空间定义了一个新的作用域。 命名空间里面可以定义 变量,函数,类型 定义命名空间,需要使用到 namespace 关键字 ,后面跟 命名空间的名字 ,然 后接一对 {} 即可, {} 中即为命名空间的成员。

4.1 解决命名冲突 🚀

 同时我们还可以注意到,c++是兼容c的

(注意同一个域里面也不能有同名变量哈)

如果我们想要使用命名空间里面的rand

4.2 命名空间的特性 🚀

  • 同名命名空间是可以同时存在,编译器编译时会合并
  • 命名空间可以嵌套

 (按C语言搞,然后后面的名字(Node)属于这个域)
(不加也可以,因为C++里面升级为了类)

(都是全局的) 

4.3 命名空间的使用 🚀

namespace N { int a = 10; int b = 20; int Add(int left, int right) { return left + right; } int Sub(int left, int right) { return left - right; }}int main(){ printf("%d\n", a); // 该语句编译出错,无法识别a return 0; }

加命名空间名称及作用域限定符

int main(){ printf("%d\n", N::a); return 0; }

使用using将命名空间中成员引入(下面会介绍using)

using N::b;int main(){ printf("%d\n", N::a); printf("%d\n", b); return 0; }

使用using namespace 命名空间名称引入

using namespce N;int main(){ printf("%d\n", N::a); printf("%d\n", b); Add(10, 20); return 0; }

5. using 使用 🚀

using 就是把命名空间的内容展开,就相当于把里面的变量或者类型放出来,但是注意命名空间里面的都是全局的。

首先说大家经常见的   using namespace std;

大家都会去写这句,但是有些伙伴不知道为什么要写,其实这句话就是展开c++标准库的(std)

因为我们要使用的 cout 和 endl 就是c++标准库的

1. 如果不使用using 🚀

2. 释放外层命名空间 🚀

3. 释放特定命名空间 🚀

3.1 释放标准库的 

3.2 释放命名空间的 🚀

 

6. 缺省参数 🚀

缺省参数是 声明或定义函数时 为函数的 参数指定一个默认值 。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参。(跟备胎一样哈,有男朋友就不要,没有男朋友备胎上,害)

 

 

上面是全缺省(都有备胎)
下面是半缺省(不是都有备胎)

注意:缺省参数  声明和定义不能同时出现(因为怕出现不一样的)  而且只能声明给,定义不给(不能反过来),因为在编译的时候,先打开头文件,然后遇到函数调用,如果声明中没有说明缺省参数编译器就认为出错了,而函数定义的出现是在链接。

总结一下 🚀

1. 半缺省参数必须 从右往左依次 来给出,不能间隔着给 2. 缺省参数不能在函数声明和定义中同时出现 如果生命与定义位置同时出现,恰巧两个位置提供的值不同,那编译器就无法确定到底该用那个缺省值。 3. 缺省值必须是常量或者全局变量 4. C 语言不支持(编译器不支持)

7. 函数重载 🚀

函数重载 : 是函数的一种特殊情况, C++ 允许在 同一作用域中 声明几个功能类似 的同名函数 ,这些同名函数的 形参列表 ( 参数个数 或 类型 或 (有不同类型的参数的)顺序 ) 必须不同 ,常用来处理实现功能类似数据类型不同的问题 注意:只有返回类型不同是不可以的,因为返回类型是对于结果的解释,是没有放进c++汇编代码的,但是函数名,函数长度,函数参数类型等是放进了汇编代码的,所以c++是可以认出他们,同时c语言的汇编中函数的解释是没有这么多东西是,就是原名,所以这也是c语言不支持函数重载的原因。

用法

最后的最后,创作不易,希望读者三连支持💖

赠人玫瑰,手有余香💖

房贷之家