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

1. 命名空间

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

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

cpp 复制代码
std::cout<<"啊吧怪不啊吧"<<endl;

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

1.1 命名空间定义

cpp 复制代码
​
namespace struggle
{
    int a=10;
    
    class hash
    {
    ........
    };
}

​

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

1.2 命名空间的使用

cpp 复制代码
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 缺省参数概念

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

cpp 复制代码
​void func(int a=1)
{
    cout<<a<<endl;
}

int main()
{    
    func();
    func(10);
    return 0;
}

​

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

3.2 缺省参数分类

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

cpp 复制代码
​
​
void func(int a=1,int b=1)
{
    cout<<a<<b<<endl;
}

int main()
{    
    func(10,10);
    return 0;
}

​

​

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

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

cpp 复制代码
​void func(int a=1,int b)
{
    cout<<a<<b<<endl;
}

int main()
{    
    func(10,10);
    return 0;
}

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

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

4. 函数重载

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

cpp 复制代码
​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函数中分别调用这两个函数,根据参数类型的不同,编译器会自动选择调用对应的函数。

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

相关推荐
智商低情商凑20 小时前
Go学习之 - Goroutines和channels
开发语言·学习·golang
半桶水专家20 小时前
Go 语言时间处理(time 包)详解
开发语言·后端·golang
编程点滴20 小时前
Go 重试机制终极指南:基于 go-retry 打造可靠容错系统
开发语言·后端·golang
实心儿儿20 小时前
C++ —— 模板进阶
开发语言·c++
萧鼎21 小时前
Python PyTesseract OCR :从基础到项目实战
开发语言·python·ocr
go_bai21 小时前
Linux-线程2
linux·c++·经验分享·笔记·学习方法
二川bro21 小时前
第57节:Three.js企业级应用架构
开发语言·javascript·架构
sali-tec21 小时前
C# 基于halcon的视觉工作流-章62 点云采样
开发语言·图像处理·人工智能·算法·计算机视觉
j_xxx404_1 天前
C++:继承(概念及定义|作用域|基类与派生类转换|默认成员函数|与友元、静态成员关系|多继承|组合)
数据结构·c++
这人很懒没留下什么1 天前
SpringBoot2.7.4整合Oauth2
开发语言·lua