C++入门,命名空间、缺省参数详解!

C++入门

  • 1.命名空间
    • 1.1 为什么要有命名空间?
    • 1.2 什么是命名空间?
    • 1.3 命名空间怎样用?
      • 1.3.1 命名空间的定义
      • 1.3.2 命名空间的使用
  • 2.C++输入输出
  • 3.缺省参数
    • 3.1什么是缺省参数?
    • 3.2什么时候会用到缺省参数?
    • 3.3缺省参数分类

1.命名空间

1.1 为什么要有命名空间?

C/C++代码中,存在大量的变量、函数和类,对于他们的命名,难免会出现重复的情况,导致代码执行出错。所以,C++设计了命名空间来解决上述问题。

1.2 什么是命名空间?

一个命名空间会形成一个域,每个域里面的数据都是相互独立的,数据只属于定义自己的命名空间。
举个生活中简单的例子:

C++入门,命名空间、缺省参数详解!_第1张图片

1.3 命名空间怎样用?

1.3.1 命名空间的定义

使用命名空间,首先要会定义,命名空间的定义方法如下:
namespace(关键字)+ (命名空间名称) + {(命名空间中的内容)}。
举例如下:
a.普通命名空间

//普通命名空间
namespace test1    //该命名空间名称为 test1
{
	//变量、函数和类在此定义
	int a = 0;
	int add(int m, int n)
	{
		return m + n;
	}
}

b.嵌套命名空间

//嵌套命名空间
namespace test2       //该命名空间名称为 test2
{
	int a = 0;
	int Add(int m, int n)
	{
		return m + n;
	}
//在命名空间 test2中再定义一个命名空间 test3
	namespace test3
	{
		int c;
		int d;
		int Sub(int m, int n)
		{
			return m - n;
		}
	}
}

c.在同一个工程中定义多个相同的命名空间,编译器最后会将它们合成为同一个命名空间

//两个test1最后会合成为一个test1
namespace test1
{
	int a = 0;
	int add(int m, int n)
	{
		return m + n;
	}
}
namespace test1
{
	int b = 0;
	int sub(int m, int n)
	{
		return m - n;
	}
}

1.3.2 命名空间的使用

a.方法一:(域名)+ :: (域作用限制符)+(要使用的变量或函数名)

namespace test1
{
	int a = 0;
	int add(int m, int n)
	{
		return m + n;
	}
}
int main()
{
	int ret = test1::add(1, 2); //ret要获取命名空间test1中函数add()的返回值,要使用方法一。
	return 0;
}

b.方法二:将命名空间中要使用的变量或函数单独展开在全局域中:using +(命名空间名)+ :: + (要使用的变量或函数名)

namespace test1
{
	int a = 0;
	int add(int m, int n)
	{
		return m + n;
	}
}
using test1::add;  //在这里将命名空间test1中函数add展开,主函数中就可直接使用
int main()
{
	int ret = add(1, 2);
	return 0;
}

c.方法三:将命名空间全部展开到全局域中,命名空间中所有数据都可直接使用:using namespace + (命名空间名)

namespace test1
{
	int a = 0;
	int add(int m, int n)
	{
		return m + n;
	}
}
using namespace test1;   //将命名空间test1整个展开到全局域中
int main()
{
	int ret = add(1, 2);
	return 0;
}

2.C++输入输出

C++标准输入/标准输出:cin/cout.
C++入门,命名空间、缺省参数详解!_第2张图片
使用方法:

 //cin/cout在库和std命名空间中,所以必须写上
#include     
using namespace std;
int main()
{
	int a = 0;
	cin >> a;                         //从键盘向变量a中输入
	cout << "Hello world!!!" << endl; //输出Hello world,endl为换行
	system("pause");
	return 0;
}

cout/cin相比printf()/scanf() 的优点:
a.可自动识别类型,控制输入输出格式
b.可连续输出在同一行
例如下:

int main()
{
	int a;
	double b;
	char c;
	cout << "please input :" << endl;
	cin >> a >> b >> c;
	cout << a << " " << b << " " << c << endl;
	return 0;
}

C++入门,命名空间、缺省参数详解!_第3张图片

3.缺省参数

C++入门,命名空间、缺省参数详解!_第4张图片
女神有备胎,C++中有的函数参数也会有备胎,这种参数就叫做缺省参数。

3.1什么是缺省参数?

函数在声明或定义时为参数设置了默认值。

3.2什么时候会用到缺省参数?

在调用该函数时,如果不传参,则会使用该函数的缺省参数。

例如下:

int testFunc(int a = 1, int b = 2)
{
	return a + b;
}
int main()
{
	int ret = testFunc();
	cout << "未传参数时结果为:" << ret << endl; 
	ret = testFunc(10,6);
	cout << "传入参数时结果为:" << ret << endl;
	return 0;
}

在这里插入图片描述

3.3缺省参数分类

缺省参数不能在函数声明和定义时同时出现
a.全缺省参数

void testFunc(int a = 1, int b = 1,int c=1)
{
	cout << "a = " << a << "   b = " << b << "   c = " << c << endl;
}
int main()
{
	testFunc();
	testFunc(2);
	testFunc(2,3);          
	testFunc(2,3,4);
	return 0;
}

C++入门,命名空间、缺省参数详解!_第5张图片
b.半缺省参数
必须从右至左缺省参数,不能间隔着缺省!

void testFunc(int a, int b = 1,int c=1)
{
	cout << "a = " << a << "   b = " << b << "   c = " << c << endl;
}
int main()
{
	testFunc(2);              
	testFunc(2,3);
	testFunc(2,3,4);
	return 0;
}

C++入门,命名空间、缺省参数详解!_第6张图片

你可能感兴趣的:(笔记,C++,c++)