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
函数中分别调用这两个函数,根据参数类型的不同,编译器会自动选择调用对应的函数。
函数重载可以使代码更加灵活,但需要注意避免出现歧义性的情况,以确保编译器可以正确选择需要调用的函数。