c++入门基础

一,目录
1,C++关键字
2,命名空间namespace
3,C++的输入和输出
4,缺省参数
5,函数重载
6,引用
7,内联函数
8,auto关键字
9,基于范围的for循环
10,指针空值-nullptr

二,内容介绍
1.C++关键字
C语言有32个关键字。C++有63个关键字。
在这里插入图片描述
在这里插入图片描述
2.命名空间
1>.作用:对标识符的名称进行本地化,避免命名冲突或名字污染。
2>.定义:定义命名空间,需要使用namespace关键字,后面跟命名空间的名字,然后接一对{ }即可,{ }中即为命名空间的成员。
2.2.1
a.普通的命名空间
命名空间中的内容,既可以定义变量,也可以定义函数
b.命名空间可以嵌套
c.同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间。
namespace N1
{
//命名空间中的内容,可以定义变量,也可以定义函数
int a;
int Add(int left, int right)
{
return left + right;
}
}
//2.命名空间可以嵌套
namespace N2
{
int a;
int b;
int Add(int left, int right)
{
return left + right;
}
}
namespace N3
{
int c;
int d;
int sub(int left, int right)
{
return left - right;
}
}
//3.同一个工程中允许存在多个命名空间
//编译器最后会合成同一个命名空间。
namespace N1
{
int Mul(int left, int right)
{
return left * right;
}
}
注意:一个命名空间就定义了一个新的作用域,命名空间中所有的内容都局限于该命名空间。
3>使用
a.加命名空间名称及作用域限定符。
b.使用using将命名空间中的成员引用。
c.使用using namespace 命名空间名称使用
a.加命名空间名称及作用域限定符。
int main()
{
printf("%d\n", N::a);
}

b.使用using将命名空间中的成员引用。
using N::b;
int main()
{
printf("%d\n", N::a);
printf("%d\n", b);
return 0;
}

c.使用using namespace 命名空间名称使用
using namespace N;
int main()
{
printf("%d\n", N::a);
printf("%d\n", b);
Add(10, 20);
return 0;
}
3**.C++输入&输出**
1.使用cout标准输出(控制台)和cin标准输入(键盘)时,必须包含头文件以及std标准命名空间。
2.使用C++输入输出方便,不需增加数据格式控制。比如:%d,%c
4.缺省参数
4.1概念:缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的参数。
4.2类型:
全缺省参数void TestFunc(int a = 0,int b=20,int c=30)
半缺省参数void TestFunc(int a, int b = 10, int c = 20)
void TestFunc(int a = 0,int b=20,int c=30)//全缺省参数
{
cout <<“a=”<<a<< endl;
cout << “b=” << b << endl;
cout << “c=” << c << endl;
}

//半缺省参数必须从右往左一次给出,不能间隔着给。
void TestFunc(int a, int b = 10, int c = 20)//半缺省参数
{
cout << “a=” << a << endl;
cout << “b=” << b << endl;
cout << “c=” << c << endl;
}
注意:1.半缺省参数必须从右往左一次给出,不能间隔着给。
2.缺省参数不能在函数声明和定义中同时出现。
3.缺省值必须是常量或者全局变量。
4.C语言不支持(编译器不支持)。
//同名的无参函数和全缺省函数不能同时存在
void TestFunc(int a = 10)
{}
void TestFunc()
{}
int main()
{
TestFunc();
return 0;
}

5.函数重载
1.概念:c++允许同意在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数或类型或顺序)必然不同,常用来处理实现功能类似数据类型不同的问题。
//函数重载:必须在相同的作用域,函数名字必须相同,参数列表(个数,类型,类型顺序)不同
int Add(int left, int right)
{
return left + right;
}
double Add(double left, double right)
{
return left + right;
}
//int Add(double left, double right)
//{
// return left + right;
//}//如果两个函数仅仅是返回值不同,不能构成函数重载
int main()
{
//编译器在编译阶段,根据对所传递实参类型的推演,根据推演实际结果选择调用
Add(10, 20);
Add(10.0, 20.0);
Add(1, (int)2.3);//对实参进行隐式类型转化
return 0;
}
2.名字修饰:
概念:是一种在编译过程中,将函数,变量的名称重新改编的机制,简单来说就是编译器为了区分各个函数,将函数通过某种算法,重新修饰为一个全局唯一的名称。
注意:C语言不支持函数重载
原因:C语言编译器对函数名字的修饰规则–只是在函数名字前加下划线_。在当前工程中相同函数名函数时,就会冲突。
C++的命名规则:被修饰后的名字中包含了:函数的名字以及参数类型。将参数类型包含在最终的名字中,就可保证名字在底层的全局唯一性。:作用域+返回类型+函数名+参数列表。

既然返回值类型也考虑到映射机制中,这样不同的返回类型映射之后的函数名肯定不一样了,为什么不将函数返回类型考虑到函数重载中?
为了保持解析操作符或函数调用时,独立于上下文(不依赖于上下文)
float sqrt(float);
double sqrt(double);

void f(double da, float fla)
{
float fl=sqrt(da);//调用sqrt(double)
double d=sqrt(da);//调用sqrt(double)

fl=sqrt(fla);//调用sqrt(float)

d=sqrt(fla);//调用sqrt(float)
}
//如果返回类型考虑到函数重载中,
//这样将不可能再独立于上下文决定调用哪个函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值