当前位置: 首页 > news >正文

C++相关基础概念之入门讲解(上)

1. 命名空间

C++中的命名空间(namespace)是用来避免命名冲突问题的一种机制。通过将类、函数、变量等封装在命名空间中,可以避免不同部分的代码中出现相同名称的冲突。在C++中,可以使用namespace关键字来定义命名空间。

然后我们在调用的时候可以这样:

std::cout<<"啊吧怪不啊吧"<<endl;

就是在我们使用的每一行只要使用了关于std这个命名空间里面的东西,那么就在前面加上这个,即(命名空间名字)加上::来表示。当然,我相信很多人都会觉得繁琐,我们也可以在主函数外直接将命名空间展开,PS:一般来说我们自己写的小型代码可以直接展开,但是在一些大型的项目里面听说是不允许直接展开大型的命名空间,因为这会使项目代码运行速度过慢,因为要去里面一遍遍的重复查找那些函数,变量之类的。同时会造成命名空间冲突,使代码无法正常运行。

1.1 命名空间定义

​
namespace struggle
{int a=10;class hash{........};
}​

现在我们创建了一个命名空间,然后在里面有一int类型的变量a,他的大小为10。然后我们可以调用他,当然,如果我们在main函数上面已经展开了这个名为struggle的命名空间,那么我们就不可以重复定义一个变量叫a,并且给他赋值为5,3,7,之类的了。

1.2 命名空间的使用

​
​
using namespace struggle;int main()
{int b=a;hash<int,int> myhash;............return 0;
}​​

我们来看,在这张图里面,首先在main的上方展开了这个名为struggle的命名空间,然后我们便可以直接在main里面使用a这个变量和hash这个类。

2. 输入与输出

在C++中,输入与输出分别是cin与cout,然后通过>>与<<来间隔。比如说cin>>a和cout<<a;因为有人说像水一样流入与流出,所以他们也被称为流输入与流输出。

PS:使用他们时必须包含<iostream>以及按命名空间使用方法使用std.

3. 缺省参数

3.1 缺省参数概念

缺省参数是指在函数或方法的定义中设置了默认值的参数,当调用该函数或方法时如果没有传入对应参数的值,则会使用默认值。这样设计可以简化函数调用时的语法,提高代码的灵活性和可读性。在一些编程语言中,缺省参数也被称为默认参数。

​void func(int a=1)
{cout<<a<<endl;
}int main()
{    func();func(10);return 0;
}​

这个代码的输出结果是先输出一个1,再输出一个10。因为在这个代码里面程序会先判断你有没有给值,如果没有的话就会使用这个缺省参数,反之则不使用这个缺省参数。

3.2 缺省参数分类

缺省参数分为全缺省参数和半缺省参数。其实也很好理解,就是在函数体里面的每一个参数都有缺省值,那就是全缺省参数

​
​
void func(int a=1,int b=1)
{cout<<a<<b<<endl;
}int main()
{    func(10,10);return 0;
}​​

如该图中的func就是全缺省参数。

如果在函数体里面不是每一个参数都有缺省值,那就是半缺省参数

​void func(int a=1,int b)
{cout<<a<<b<<endl;
}int main()
{    func(10,10);return 0;
}

如该图中的func就是半缺省参数,因为里面的b并没有缺省值。

注意:如果说一个函数有两个缺省值,那你传过去的参数也不可以低于两个。

4. 函数重载

函数重载(Function Overloading)是指在C++中允许定义多个同名函数,这些同名函数具有不同的参数列表或参数类型。在调用这些同名函数时,编译器会根据参数的数量或类型来确定调用哪个函数。

​void print(int num) {cout << "Printing an integer: " << num << endl;
}void print(double num) {cout << "Printing a double: " << num << endl;
}int main() {print(10);print(3.14);return 0;
}​

在上面的示例中,定义了两个名为print的函数,一个接受int类型的参数,另一个接受double类型的参数。在main函数中分别调用这两个函数,根据参数类型的不同,编译器会自动选择调用对应的函数。

函数重载可以使代码更加灵活,但需要注意避免出现歧义性的情况,以确保编译器可以正确选择需要调用的函数。


http://www.mrgr.cn/news/94594.html

相关文章:

  • 用Lua脚本实现Redis原子操作
  • Qt 控件概述 QWdiget
  • Java数据结构第二十三期:Map与Set的高效应用之道(二)
  • A SURVEY ON POST-TRAINING OF LARGE LANGUAGE MODELS——大型语言模型的训练后优化综述——第2部分
  • 从0开始搭建微服务架构特别篇SpringCloud网关聚合knife4j
  • C语言【内存函数】详解加模拟实现
  • 【大模型基础_毛玉仁】2.4 基于 Encoder-Decoder 架构的大语言模型
  • Ansible 自动化运维
  • 路由器与防火墙配置命令
  • (done) 梳理 xv6-lab-2023 fs.img 生成过程,以及 xv6 磁盘结构
  • python速通小笔记-------1.容器
  • pytest 框架学习总结
  • 论Linux进程间通信
  • 高德地图猎鹰服务调用指南(Java后端)
  • Flutter三棵树是什么,为什么这么设计
  • 使用kubeadm方式以及使用第三方工具sealos搭建K8S集群
  • synchronized与 Java内置锁(未写完)
  • 嵌入式八股C语言---面向对象篇
  • 【DeepSeek应用】DeepSeek模型本地化部署方案及Python实现
  • 备赛蓝桥杯-Python-Day1-基础语法回顾