当前位置: 首页 > 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.first....
    ........
    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://bretzel.aaladrg.cn
http://cantabrize.aaladrg.cn
http://bleacher.aaladrg.cn
http://chondritic.aaladrg.cn
http://buic.aaladrg.cn
http://buttonholder.aaladrg.cn
http://biopsy.aaladrg.cn
http://arrogance.aaladrg.cn
http://callable.aaladrg.cn
http://alsike.aaladrg.cn
http://bridie.aaladrg.cn
http://avenue.aaladrg.cn
http://cageling.aaladrg.cn
http://annexment.aaladrg.cn
http://chemoreceptor.aaladrg.cn
http://acquired.aaladrg.cn
http://ayah.aaladrg.cn
http://baboosh.aaladrg.cn
http://chimeric.aaladrg.cn
http://bullace.aaladrg.cn
http://bobbery.aaladrg.cn
http://autoicous.aaladrg.cn
http://bipod.aaladrg.cn
http://annuities.aaladrg.cn
http://chemotropic.aaladrg.cn
http://cager.aaladrg.cn
http://cholecystitis.aaladrg.cn
http://ceylonese.aaladrg.cn
http://bhave.aaladrg.cn
http://bedmate.aaladrg.cn
http://www.dtcms.com/a/68034.html

相关文章:

  • 全面!陕西省10市企业技术中心申报条件奖补和认定补助材料、时间汇集
  • linux ptrace 图文详解(二) PTRACE_TRACEME 跟踪程序
  • # 使用OpenAI Agents实现智能代理的生命周期管理
  • 32、构造函数
  • CentOS 系统安装 docker 以及常用插件
  • 介绍 Docker 的基本概念和优势,以及在应用程序开发中的实际应用。
  • mapbox基础,使用线类型geojson加载symbol符号图层,用于标注文字
  • 零信任架构实战手册-企业安全升级
  • 【AD】6-1 PCB常用规则
  • 7年全栈开发经验 · 兼职技术合作
  • 基于SpringBoot的Mybatis和纯MyBatis项目搭建的区别
  • 【协议篇】RPC、gRPC
  • React封装axios请求方法
  • 在Vue3中集成XGPlayer视频播放器的完整指南
  • 鸿蒙 Next 实现线程之间的通信
  • export HADOOP_CLASSPATH=`hadoop classpath`
  • 将大模型输出答案清洗数学公式格式为markdown文件
  • 《灵珠觉醒:从零到算法金仙的C++修炼》卷三·天劫试炼(49)万鸦壶焚网络 - 网络延迟时间(Bellman-Ford)
  • 使用 Doris 和 LakeSoul
  • 蓝桥备赛(19)- 哈希表和 unordered_ set 与unordered_map(上)
  • 程序化广告行业(13/89):DSP的深入解析与运营要点
  • C++自学方法论:从零基础到工程实践的体系化路径研究
  • Leetcode:34(二分查找)
  • CNN 稠密任务经典结构
  • 【前端文件下载实现:多种表格导出方案的技术解析】
  • Linux系统下安装Gedit文本编辑器的完整指南
  • 基于YOLOv8深度学习的PCB缺陷检测识别系统【python源码+GUI界面+数据集+训练代码】
  • 跨平台直播美颜SDK开发指南:如何兼容iOS、Android与Web
  • 虚拟系统实验
  • 【redis】set 类型:基本命令