一.命名空间
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.只能赋值全局变量或者常量,不能使用变量来为形参赋值