作者:一个喜欢猫咪的的程序员
专栏:《C++》
喜欢的话:世间因为少年的挺身而出,而更加瑰丽。 ——《人民日报》
目录
1.C++关键字
2.命名空间
2.1局部变量和全局变量
2.2命名空间的概念及使用
2.3std命名空间
3.C++输入&输出
4.缺省参数
4.1缺省参数的概念及使用
4.2全缺省和半缺省
编辑 5.函数重载
5.1函数重载的使用
5.2函数重载的底层原理
C++是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式
等。熟悉C语言之后,对C++学习有一定的帮助,本篇博客主要目标:
C++总计63个关键字,C语言32个关键字
这些关键字不需要特别记
C语言中,局部变量优先于全局变量
int a = 10;
void f1()
{
int a = 1;
printf("%d\n", a);//运行结果为1
}
在有局部变量的情况下,如何使用全局变量
在全局变量前面加::(域作用限定符)
int a = 10;
void f1()
{
int a = 1;
printf("%d\n", a);//运行结果为1
printf("%d\n", ::a);//运行结果为10
}
C语言在 变量重命名的时候,但都不能被改变量名时,没有很好的办法解决
命名空间(namespace)——命名空间域,只影响使用,不影响生命周期
c++当变量重命名的时候,但都不能被改变量名时,就需要命名空间
命名空间可以嵌套,甚至可以多次嵌套
变量放在命名空间内
namespace Bbit
{
struct node
{
struct node* next;
int val;
};
struct queue
{
struct node* head;
struct node* tail;
};
int min = 1;
}
using namespace Abit;
using namespace Bbit;
int main()
{
//struct node a;//默认在局部和全局找,而现在结构体在命名空间内
struct Abit::node a;
struct Bbit::node b;
Abit::min++;
cout << "12346" << endl;
Bbit::min++;
return 0;
}
std是C++标准库的命名空间
1. 在日常练习中,建议直接using namespace std即可,这样就很方便。
2. using namespace std展开,标准库就全部暴露出来了,如果我们定义跟库重名的类型/对
象/函数,就存在冲突问题。该问题在日常练习中很少出现,但是项目开发中代码较多、规模
大,就很容易出现。所以建议在项目开发中使用,像std::cout这样使用时指定命名空间 +
using std::cout展开常用的库对象/类型等方式。
cin标准输入流,cout标准输出流
4.cin,cout会自动识别类型,不需要%d %s
int main()
{
//<<流插入
//endl 相当于换行符
cout << "hello world" << endl;
cout << "hello world" << endl;
int i;
//>>流输出
cin >>i ;
return 0;
}
缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实
参则采用该形参的缺省值,否则使用指定的实参。
缺省参数说的简单点,就是给函数参数写默认值
返回值类型 函数名 (参数类型 参数名=x)(x为任意常数/全局变量)
有缺省参数时:
void func(int a=10)//这里的a就是缺省参数
{
cout << a << endl;
}
int main()
{
func();
return 0;
}
缺省参数的使用分为全缺省和半缺省
半缺省的规则:
半缺省必须从右往左缺省
在有缺省参数的情况下,只能不给有缺省参数的函数参数传值,没有缺省参数的函数必须传值
void func1(int a = 10, int b = 20, int c = 30)
{//全缺省
cout << a << endl;
cout << b << endl;
cout << c << endl;
}
int main()
{
/*func(15);
func();*/
func1(1, 2, 3);
func1(1, 2);
func1(1);
func1();
//func1(, 20, );//跳着传不可以
return 0;
}
函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这
些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同,常用来处理实现功能类似数据类型
不同的问题。
函数重载:
int Add(int left, int right)
{
cout << "int Add(int left, int right)" << endl;
return left + right;
}
double Add(double left, double right)
{
cout << "double Add(double left, double right)" << endl;
return left + right;
}
C语言中函数调用是通过函数名进行查找的。
C++函数重载后,很明显就不可以通过函数名查找,通过函数的修饰名查找
由于Windows下vs的修饰规则过于复杂,而Linux下g++的修饰规则简单易懂,下面我们使
用了g++演示了这个修饰后的名字。
通过下面我们可以看出gcc的函数修饰后名字不变。而g++的函数修饰后变成