c++---重载和缺省参数

更多点子:c++—目录索引(知识小渠道)


c++
贝尔实验室的比亚尼.斯特劳斯特鲁普博士在二十世纪80年代发明并实现了c++。起初,这种语言被称作“C with Class”(包含类别的C语言),作为C语言的增强版出现。c几乎是c++的一个子集,所以C语言支持的语法在c++基本都支持并需要使用。

#include<iostream.h>
//这是就C++库的头文件,新的编译器(如vs2008及以上)都不再支持,建议使用下面的新库的头文件
#include<iostream>

这里写图片描述
命名空间
名字空间域是随标准c++而引入的,相当于一个更加灵活的文件域(全局的),可以用花括号把文件的一部分括起来,并以关键字namespace开头给它起名字

namespace name1
{
    int phonycat = 0;
}
namespace name2
{
    int phonycat = 1;
}
name1::phonycat = 3;
name2::phonycat = 4;

名字空间域可以解决全局命名冲突的问题,标准c++库中所有组件是在一个被称作std的名字空间中声明和定义的。在采用标准c++的平台,在采用标准c++的平台上使用标准c++库中的组件,只要写一个using指示符:using namespace std;就可以使用标准c++库中的所有成员
::是作用域解析符 可以来访问成员
c++的输入输出
cout是标准输出流对象,<<是输出操作符;
cin是标准输入流对象,>>是输入操作符;
end1是换行操作符;
都属于c++标准库,所以都在std的名字空间里面
输入输出不像c里的printf和scanf,不用说明类型,会自动识别

#include<iostream>
using namespace std;
int main()
{
    int i = 1;
    doubel d = 1.11;
    cout<<"int :"<<i<<"double :"<<d<<endl;
    cout<<"please input int and doube:"<<endl;
    cin>>i>>double;
    cout<<"int :"<<i<<"double :"<<d<<endl;
}
void fun1()
{
int a;
count<<"input a:";
cin>>a;
count<<"dec:"<<dec<<a<<end1;//以十进制形式输出整数
count<<"hex:"<<hex<<a<<end1;//以十六进制形式输出整数a
count<<"oct:"<<setbase(8)<<a<<end1;//以八进制形式输出整数a
char *p="string";//p指向字符串“string”
count<<setw(10)<<p<<end1;//指定域宽为100,输出字符串
count<<setfile('*')<<setw(10)<<p<<end1;//指定域宽,输出字符串,空白处以‘*’填充
}

函数重载
在同一作用域类,一组函数的函数名相同,参数列表不同(个数/类型),返回值可同可不同

void OverLoadFunc(int a,double b,char c)
{}
int OverLoadFunc(double a)
{}

为什么C语言不支持重载,c++支持重载?
虽然两个函数参数不同,但是编译不通过,在C语言中,主要是链接的这个过程,看的是函数名,那就有不少于一个函数地址,有歧义,在符号表里,函数的标识就是函数名本身
在c++中,函数的标识就不是函数名本身了,函数有函数名修饰规则,函数名加参数类型
缺省参数
参数缺省包括全缺省和半缺省。全缺省是就是所有参数都给出默认值,半缺省是仅有函数的部分参数给出了默认值,相当于个备胎
类型不同指的是对应位置的类型不同

int Add(int x = 1, int y = 1)  
{  
    return x + y;  
} //全缺省
int Add(int x,int y = 0)
{
    return x + y;    
}//半缺省
int main()
{
    int ret = Add(10);
}

ret在全缺省的结果是11,在半缺省的结果是10

int Add(int x = 0;int y)
{
    return x + y;
}

要么缺省缺右边的,要么全缺省
如果Add写成这样,是会报错的:默认参数不在参数列表末尾。
为什么?调用的时候会把给出的实参赋值给函数参数列表的第一个形参。
使用半缺省,缺省的参数只能在参数列表的最后面
如果有什么不对的地方,可以评论告诉我,望指导!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值