行业知识
【C++】入门(一):命名空间、缺省参数、函数重载
目录
一、关键字
二、命名空间
问题引入(问题代码):
域的问题
1.::域作用限定符 的 用法:
2.域的分类
3.编译器的搜索原则
命名空间的定义
命名空间的使用
举个栗子:
1.作用域限定符指定命名空间名称
2. using 引入命名空间中的成员 即 展开命名空间中某一个
3. usinng namespace 命名空间名称 展开命名空间
三、C++输入、输出
四、缺省参数
概念
全缺省参数
半缺省参数
实践中的应用场景举个例子:
声明和定义分离
回顾 声明 和定义的概念
再来分析上述程序
理解编译与链接的过程
理解函数与文件的关系
五、函数重载
代码示例:
C++是如何支持函数重载的?
函数名修饰
一、关键字
| asm | do | if | return | try | continue |
|---|---|---|---|---|---|
| auto | double | inline | short | typedef | for |
| bool | dynamic_cast | int | signed | typeid | public |
| break | else | long | sizeof | typename | throw |
| case | enum | mutable | static | union | wchar_t |
| catch | explicit | namespace | static_cast | unsigned | default |
| char | extern | operator | switch | virtual | register |
| const | false | private | template | void | true |
| const_cast | float | protected | this | volatile | while |
| delete | goto | reinterpret_cast |
增加的关键字: C++增加了一些关键字来支持面向对象编程(如类、继承、多态等)和模板编程。例如,class,public,protected,private,virtual,friend,template,typename等。这些关键字没有在C语言中。
类型增强:C++增加了一些用于类型安全和方便的关键字,如bool,true,false,using,namespace等。
异常处理:为了支持异常处理,C++引入了try,catch,throw等关键字。
新的转换操作符:C++提供了static_cast,dynamic_cast,const_cast和reinterpret_cast等关键字进行类型转换,这是C语言中所没有的。
增强的存储类说明符:C++引入了mutable和thread_local等存储类说明符。
模板编程:为了支持泛型编程,C++增加了template和typename关键字。
新增运算符:C++还定义了如new,delete等用于动态内存管理的关键字,这些在C中通常通过库函数如malloc和free来实现。
特殊成员函数关键字:C++还有如default和delete等关键字,用于特殊成员函数的声明,这样设计是为了提供更好的控制。
二、命名空间
问题引入(问题代码):
下面代码存在命名冲突 : rand变量 和头文件中声明的函数 rand() 名字相同 导致冲突。
#include#include /*rand*/int rand = 0;// C语言没办法解决类似这样的命名冲突问题,所以C++提出了namespaceguan来解决int main(){ printf("%d\n",rand); return 0;} 域的问题
1.::域作用限定符 的 用法:
限定符左边是哪一个域名 就限定了访问该变量的范围
左边是空 默认是全局域
2.域的分类
-
全局域
-
局部域:如果不用限定符,默认访问局部域 局部优先
-
命名空间域:为了防止命名冲突 eg.全局定义两个同名变量 ,防止重定义,C++提出就用关键字namespace把他们定义在不同命名空间域中。
-
类域
注意:
全局域、局部域既会影响生命周期,也会影响访问。命名空间只影响访问
3.编译器的搜索原则
1️⃣当前局部域 2️⃣全局域 3️⃣如果指定了,直接去指定域搜索
命名空间的定义
正常定义
// 正常的命名空间定义namespace hhh{ // 命名空间中可以定义变量/函数/类型 int rand = 10; int Add(int left, int right) { return left + right; }struct Node { struct Node* next; int val; }; }嵌套定义
举个栗子:
namespace aaa{namespace bbb{void Push(){coutc;这行代码首先从标准输入流中接收一个双精度浮点数,并将其存储在变量b中,然后接收一个字符并存储在c中。四、缺省参数
-
概念
声明或定义函数时为函数的参数指定缺省值。缺省值就是给形参设置一个默认值。调用函数时,如果没有指定实参,则使用参数的默认值。
缺省值必须是 常量或者全局变量。一般使用常量。
void Func(int a = 0){ cout
-