c++命名空间 ,输入与输出 ,缺省参数

作为c++入门学习应该掌握这几个概念:

 一,c++命名空间

C++中采用单一的全局变量命名空间,在这单一的空间中,如果有两个变量或函数的名字完全相同,就会出现冲突。命名空间是为了解决C++中的变量、函数的命名冲突而引入的一种机制,主要思路是将变量定义在不同名字的命名空间中。

命名空间的定义

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{ }即可,{}中即为命名空间的成员。

namespace N1  //N1为命名空间的名字
{
//{}内就是命名空间的成员
	int a; 
	int add(int left, int right)
	{
		return left + right;
	}
}

 

  • 命名空间中的内容,既可以定义变量,也可以定义函数
  • 命名空间可以嵌套
  • 同一个工程中允许存在多个相同名称的命名空间 ,编译器最后会合成同一个命名空间中。

注意:一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中。

命名空间的使用:

1.加命名空间名称及作用域限定符

2.使用using将命令空间中成员引入

3.使用using namespace 命名空间名称引入

注意using指令的作用域。using namespace 只在其被声明的语句块内有效(语句块指在一对花括号{}内的一组指令)。

int main()
{
	{  //块1
		using namespace name_1; 
		name_1::print();  //调用name_1空间中的print()
	} 
	
	{   //块2
		using namespace name_2; 
		name_2::print();  //调用name_2空间中的print()
	} 
	
	return 0;
}

二.C++输入&输出

C++ 标准库提供了一组丰富的输入/输出功能,C++ 的 I/O 发生在流中,流是字节序列。如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫做输入操作。如果字节流是从内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等),这叫做输出操作

标准输出流(cout)[相当于c中printf]

预定义的对象 cout 是 iostream 类的一个实例。cout 对象"连接"到标准输出设备,通常是显示屏。cout 是与流插入运算符 << 结合使用的。

C++ 编译器根据要输出变量的数据类型,选择合适的流插入运算符来显示值。<< 运算符被重载来输出内置类型(整型、浮点型、double 型、字符串和指针)的数据项。

流插入运算符 << 在一个语句中可以多次使用,如下面实例中所示,endl 用于在行末添加一个换行符。

标准输入流(cin)[相当于c中的scanf]

预定义的对象 cin 是 iostream 类的一个实例。cin 对象附属到标准输入设备,通常是键盘。cin 是与流提取运算符 >> 结合使用的。

//使用cout输出和cin输入时,必须包含< iostream >头文件
#include<iostream> 
#include<windows.h>
using namespace std;//std标准命名空间,cout和cin包含在std标准命名空间中,使用时必须包含该命名空间
int main()
{
	int a;
	int b;
	char c;

	cin >> a;
	cin >> b >> c;//输入


	cout << a << endl;//输出
	cout << b << " " << c << endl;
	system("pause");
	return 0;
}

说明:C++使用cout进行输出(到控制台),使用cin进行输入(来源自控制台),C的方式可继续使用;

.          使用C++输入输出更方便,不需增加数据格式控制,比如:整形--%d,字符--%。

三.c++缺省参数

缺省参数概念

缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认 值,否则使用指定的实参。

缺省参数分类

  • 全缺省参数(不传递任何参数)
#include<iostream>
#include<windows.h>
using namespace std;
int add(int left=12, int right=15)
{
		return left + right;
}
int main()
{
	int ret=add();//没有传参时使用默认值
	cout << ret << endl;//27

	system("pause");
	return 0;
}

  • 半缺省参数
int add(int left=12, int right=15)
{
		return left + right;
}
int main()
{
	int ret=add(10);//25,left=10,right=15;右边缺省。
	//int ret = add(10,20);//30

	cout << ret << endl;

	system("pause");
	return 0;
}

注意:

  • 1. 半缺省参数必须从右往左依次来提供,不能间隔着给出
//eg:
int fun(int i,int j=5,int k);//错误,k未使用
  • 2. 缺省参数不能同时在函数声明和定义中出现

当声明与定义分离时,只能在声明中出现,如下示例:

//text.h,在声明中出现缺省
int Add(int a , int b = 10);
//text.cpp
int Add(int a , int b)
{
 return a+b;
}

当声明与定义一体时,在定义中出现

//只有text.cpp
int Add(int a , int b = 10)
{
 return a+b;
}
  • 3. 缺省值必须是常量或者全局变量
  • 4. C语言不支持(编译器不支持) 
void fun(); //C语言中: 表示可以接受任意多个参数 所以一般写成void fun(void) 

                   //C++语言当中:表示不接受任的参数.(没有参数,编译器会报错)

C++对于函数参数检测更加严格,如何函数没有参数则不能接受任何参数 

猜你喜欢

转载自blog.csdn.net/snowyuuu/article/details/81491132