C++——命名空间、重载函数

一.命名空间

1.意义:C++中引入命名空间的概念,旨在防止命名冲突与命名污染。

2.定义方式:

namespace 命名空间名{
    //其中定义变量或者函数
}

2.特点:

(1)可以嵌套:即某个命名空间内部还可以再定义另一个命名空间

(2)多个命名空间可以使用相同的名字。但是这不就违背了引入命名空间的初衷吗。其实并不是,多个命名空间可以拥有相同的名字,但是命名空间内部的变量 却不能重名。编译器会将多个相同的命名空间进行合并。

3.使用命名空间内部的成员时

(1)

命名空间名  :: 内部变量/函数名

//eg:
//std::cin

(2)

using 命名空间名 :: 成员
//例:
using std::cin

(3)

using namespace 命名空间名
//这样做会将该明明空间中的成员全部暴露在全局中

不推荐使用。

二.输入/输出

1.先来看看我们熟悉的C语言中的输入输出

(1)输入

//比如定义一个变量,往变量里边输入值
int a;
scanf("%d",&a);

(2)输出

//需要格式化字符串
printf("%d",a);

2.C++中的输入/输出

(1)输入

using std::cin;
int a;
cin >> a;
//也支持连续输入
int b,c;
cin >> b >> c ;

(2)输出

using std::cout;
cout << a;     //输出刚才的a的值
//同样也支持连续输出
cout << b << c << endl;
//endl表示换行,相当于"\n"

注意:

1.C++中的输入/输出是两个对象,它们是命名空间std下的两个对象,所以使用时,需要用到std这个命名空间。

2.C++中的输入/输出不用格式化字符串。

三.函数重载

1.含义:函数名与函数的返回值类型相同的情况下

①函数参数个数不同

②函数参数类型不同

③函数参数的顺序不同(感觉和②没什么差别)

2.原因:C++中函数的底层名是通过函数名和参数类型结合来实现的

比如:在Linux下

void fun(int a,int b);
//它底层函数名是_Z3funii;

其中3代表函数名包含3个字符,后面的fun就是函数名了,ii代表参数类型首字母

C语言中底层的函数名只是函数名本身,所以不能函数重载

四.函数的缺省参数

1.全缺省

//定义函数时,可以直接给参数赋值
void fun(int a=10,int b=20,int c=30){
    cout << a << b << c;
}

//调用时
//1.有实参时
fun(1,2,3);//此时,a=1,b=2,c=3
//2.无实参时
fun();    //此时,a=10,b=20,c=30

2.半缺省

void fun(int a,int b=20,int c=30){
    cout << a << b << c;
}

//调用时
//半缺省
fun(40,80);    //此时,a=40,b=80,c=30

缺省规则:

1.有实参时,按照实参赋值

2.全缺省时,按照定义函数时参数的值来使用

3.半缺省时,从右向左依次赋值

4.只能赋值全局变量或者常量,不能使用变量来为形参赋值

发布了58 篇原创文章 · 获赞 43 · 访问量 4419

猜你喜欢

转载自blog.csdn.net/Wz_still_shuai/article/details/89527618