- 关注博主,后期持续更新系列文章
- 如果有错误感谢请大家批评指出,及时修改
- 感谢大家 点赞👍收藏⭐评论✍
C++入门 | 命名空间、输入输出、缺省参数
文章编号:C++入门 / 01
一、命名空间
C++命名空间是用来避免命名冲突的一种机制。当我们在一个程序中使用多个库或者模块时,可能会出现相同的函数名、变量名等,这样会导致命名冲突。通过使用命名空间,我们可以将这些函数、变量等包裹在不同的命名空间中,从而避免命名冲突。
在C语言中没有办法解决类似命名冲突的问题,在C++中提出namespace
来解决。
1. std命名空间的使用惯例
- 在平时练习中,直接
using namespace std ;
这样在日常进行代码练习中比较方便。 - 但是将
using namespace std ;
展开,在多项目开发中可能在定义的类型跟库里的类型名/对象/函数冲突,就会产生问题。 - 建议在项目开发中,使用
std::cout
这种方式指定命名空间或者使用using std::cout
的方式只展开常用的库对象/类型。
2. 如何定义命名空间?
定义命名空间,需要使用到namespace
关键字,后面跟命名空间的名字,然后加上一对 { }
中既为命名空间的成员。
//DuckBro是命名空间的名字,一般在开发中用项目名字做命名空间名 //在这里用于练习,将命名取名为DuckBro,命名有意义就行。 //1.简单的命名空间 namespace DuckBro { int a = 18; int b = 17; int add(int a1,int b1) { return a1 + b1; } }
//2.命名空间可以嵌套 namespace Duck1 { int a = 18; int b = 17; int add(int a1, int b1) { return a1 + b1; } namespace Duck2 { int a = 18; int b = 17; int add(int a1, int b1) { return a1 + b1; } } }
3. 命名空间该如何使用?
在命名空间中的成员应该如何使用?
命名空间的使用有以下三种方式:
- 加命名空间名称及作用域限定符
int main() { printf("%d\n", N::a); return 0; }
- 使用using将命名空间中某个成员引入
using N::b; int main() { printf("%d\n", N::a); printf("%d\n", b); return 0; }
- 使用using namespace 命名空间名称 引入
using namespce N; int main() { printf("%d\n", N::a); printf("%d\n", b); Add(10, 20); return 0; }
二、C++的输入&输出
- 在使用C++中的cin和cout使用,要必须包含头文件
<iostream>
,以及按命名空间使用方法std
. - cout和cin是全局的流对象,endl是特殊的C++符号,用于换行输出,同时endl也包含在头文件
<iostream>
。 - <<是流插入运算符,>>是流提取运算符。
- 在C++中使用cout/cin相较于C语言中的printf/scanf更加方便,C++的输入输出可以自动识别变量类型,无需像C语言时需要手动变换控制格式。
1. 标准输出对象(cout & <<)
#include<iostream> using namespace std; int main() { int a; double b; a = 10; b = 10.12; //可以自动识别变量的类型 cout << a<<endl; cout << b << endl; return 0; }
输出结果:
2. 标准输入对象(cin & >>)
#include<iostream> using namespace std; int main() { int a; double b; cin >> a; cin >> b; cout << a << endl << b; return 0; }
输出结果:
三、缺省参数
1. 缺省参数概念
缺省参数是指在函数定义时,为参数指定了默认值。在调用该函数时,如果没有传入对应的参数值,则会使用默认值代替。使用缺省参数可以简化函数调用,使代码更加灵活。
void Func(int a = 0) { cout << "Func:" << a << endl; } int main() { Func(); // 没有传参时,使用参数的默认值 Func(10); // 传参时,使用指定的实参 return 0; }
2. 缺省参数分类
- 全缺省参数
void Func(int a = 10, int b = 20, int c = 30) { cout<<"a = "<<a<<endl; cout<<"b = "<<b<<endl; cout<<"c = "<<c<<endl; }
- 半缺省参数
- 半缺省参数必须从右往左依次来给出,
不能间隔着给!!!
- 缺省参数不能在函数声明和定义中同时出现
- 缺省值必须是常量或者全局变量
- C语言不支持(编译器不支持)
void Func(int a, int b = 10, int c = 20) { cout<<"a = "<<a<<endl; cout<<"b = "<<b<<endl; cout<<"c = "<<c<<endl; }