【C++】入门篇(1)

概要

本文简要介绍有关于C++的一些入门基础知识与语法,以及C++是如何对C语言设计不合理的地方进行优化的,同时也为后续类和对象的学习做铺垫。

namespace

一般访问变量默认优先在局部域寻找,其次是全局域,最后是命名空间域,命名空间域不会影响生命周期。

namespace today
{
int monday;
int tuesday;
}
命名空间允许嵌套使用,相同名字的命名空间会合并。
命名空间一般有三种使用方式
(1)使用using namespace 命名空间名称 引入,声明using namespace today会展开该命名空间域;
(2)使用using将命名空间中某个成员引入,声明using today::monday,可以访问到monday了;
(3) 加命名空间名称及作用域限定符,比如说指定today::monday.

<<(>>)

1.用于左移(右移)

int i=10;
i=i << 1;

2.流插入(流提取,cin>>a>>b;)
C++可以自动识别变量类型

cout<<str<<i<<ch<<endl;
printf(“%s %d %c\n”,str,i,ch);

缺省参数

缺省参数是声明或定义函数时为函数的参数指定一个缺省值。
在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参。
使用注意事项:
缺省参数在声明和定义不能同时给出,只在声明给出;
缺省值必须是常量或者全局变量;
半缺省参数必须从右往左依次来给出,不能间隔给出,会造成误解。

void Fun(int a = 5)
{
cout<<a<<endl;
}
int main()
{
Fun(); // 没有传参时,使用参数的默认值
Fun(1); // 传参时,使用指定的实参
return 0;
}

缺省参数分为全缺省和半缺省两类。
全缺省:

void Fun(int a = 1, int b = 2, int c = 3)
{
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
cout<<"c = "<<c<<endl;
}

半缺省:

void Fun(int a, int b = 20, int c = 30)
{
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
cout<<"c = "<<c<<endl;
} //这里不能给出(int a=1,int b,int c=3)这样间隔的形式

函数重载

C语言中不允许同名函数,但C++允许同名函数:函数名相同,参数不同。
主要是以下几种重载:
1.参数类型不同

int Add(int left, int right);
double Add(double left, double right);

2.参数个数不同

void F();
void F(int a)

3.参数类型顺序不同

void f(int a, char b);
void f(char a,int b);

简要阐述一下为什么Cpp可以实现函数重载,因为在C语言中链接时是通过函数名来寻找对应的地址,而如果是同名的函数,无法区别,造成混乱;
而CPP有函数名修饰规则,在函数的名字中引入参数类型,不同编译器有自己的规则,这样就算函数名相同,因为参数类型有区别,最后函数名字的修饰也就有了区别。

以Linux举例来说,函数int Add(int a,int b)采用gcc编译完成后,函数名字的修饰没有发生改变,比如说Add还是Add;
而在采用g++编译完成后,函数名字的修饰发生改变,编译器将函数参数类型信息添加到修改后的名字中。比如说Add会变成_Z3Addii。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值