C++入门
1.命名空间
1.1 为什么要有命名空间?
C/C++代码中,存在大量的变量、函数和类,对于他们的命名,难免会出现重复的情况,导致代码执行出错。所以,C++设计了命名空间来解决上述问题。
1.2 什么是命名空间?
一个命名空间会形成一个域,每个域里面的数据都是相互独立的,数据只属于定义自己的命名空间。
举个生活中简单的例子:
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.
使用方法:
//cin/cout在<iostream>库和std命名空间中,所以必须写上
#include <iostream>
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;
}
3.缺省参数
女神有备胎,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;
}
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;
}