目录
1.命名空间
在全局展开
指定命名空间访问
部分展开
2.C++输入&输出
3.缺省参数
3.1缺省参数的概念
3.2 缺省参数分类
3.2.1全缺省参数
3.2.2半缺省参数(部分缺省参数)
3.2.3含缺省参数的函数声明和定义分离
语言学习敲下的第一段代码,往往都是"hello world",不妨让我们用C++来对这个世界问好。
//标准输入输出流
#include
// std是C++标准库的命名空间名,C++将标准库的定义实现都放到这个命名空间中
using namespace std;
int main()
{
cout << "hello world" << endl;
return 0;
}
我们写的第一段代码就有可以讲的点——命名空间。
上面代码中的std就是一个命名空间。
命名空间可以限定里面变量的作用域,命名空间的使用如下
namespace a1
{
struct a
{
int b;
};
int min = 1;
int Add(int a, int b)
{
return a + b;
}
}
namespace a2
{
struct a
{
float b;
};
int min = 2;
int Add(int a, int b)
{
return a + b;
}
}
命名空间的对象可以是各种类型的变量,也包括函数,通过命名空间的限定,里面的成员范围限定在了这个命名空间内,这样外部就可以访问命名相同的对象。
在外部访问命名空间内的对象需要使用::操作符,比如打印hello world的代码可以写成
//标准输入输出流
#include
int main()
{
std::cout << "hello world" << std::endl;
return 0;
}
与上面代码不同之处在于这段代码的cout和endl是在main函数内部展开。这里就要介绍命名空间展开的三种方式
像第一段打印hello world的程序一样,展开在main函数外,这样整个全局都能使用该命名空间的对象,在实际项目中一般不推荐,这样可能会造成与库中对象命名相同的情况。
如同第二段打印hello world程序,这种方式在每个要使用的对象前都要使用::操作符,总体来说比较麻烦。
using std::cout;
using std::endl;
using std::cin;
像这样把常用的对象展开,可以相对比较方便的使用,并且能减少重名的概率。
上面代码中的cout就是C++中的输出,可简单理解为将内容输出到控制台,使用需包含< iostream >头文件以及按命名空间使用方法使用std。
cout和cin是全局的流对象,endl是特殊的C++符号,表示换行输出,他们都包含在包含
cout<<"hello world"<
这段代码可以理解为 "hello world"流向了控制台。
相对的还有cin用于输入
int a;
cin>>a;
相比于传统C语言的输入输出函数,C++提供的可以不指定类型,可自动识别。
缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实
参则采用该形参的缺省值,否则使用指定的实参。
void Func(int a = 0)
{
cout<
如函数
void f(int a = 1, int b = 2, int c = 3);
int main()
{
f();
return 0;
}
调用时可以一个参数都不传,也可以传一个参数,但是传参时需要注意,但是要注意,传一个或两个参数时要从左向右传,不能跳着传,也就是说
int main()
{
f(1);
return 0;
}
正确,而
int main()
{
f(1,,3);
return 0;
}
错误。
使用函数半缺省参数时,形参赋值要从右向左赋值。
void f(int a, int b, int c = 3);
int main()
{
f();
return 0;
}
同样不能跳着赋值,这与上面对应。
若有函数声明,则缺省参数只能出现在函数声明中,不能出现在函数定义中。
void f(int a = 1, int b = 2);
void f(int a, int b)
{
cout<
必须像这样,不能声明定义都出现缺省参数,只能有声明出现缺省参数。