1.命名空间 (namespace)
1>定义:命名空间,是指标识符的各种可见范围。可以用一个花括号吧文件的一部分括起来,并以关键字 namespace开头给它起一个名字。c++的所有标识符都被定义在一个名为std的namespace中。
#include<iostream>
using namespace std;
namespace FIRST //定义一个名为FIRST的命名空间
{
int a; //在命名空间内定义一个局部变量a
}
2>如何访问命名空间里面内容
(1)通过作用域解析符号(::)访问
namespace FIRST //定义一个名为FIRST的命名空间
{
int a; //在命名空间内定义一个局部变量a
}
int main()
{
cout << FIRST::a << endl;//通过作用解析域访问空间内成员
}
<2>通过使用using namespace+命名空间名访问
namespace FIRST //定义一个名为FIRST的命名空间
{
int a; //在命名空间内定义一个局部变量a
}
int main()
{
using namespace FIRST;//访问命名空间FIRST
cout <<a << endl;
}
注意:一般自己不定义命令空间。
2.C++基本的输入输出流
cin是标准输出流对象,<<是输出操作符;
cin>>变量名1>>变量名2...;
cout是标准输入流对象,>>是输入操作符;
cout<<变量名1<<变量名2...;
3.函数重载
所谓函数重载是指一个函数名可以对应着多个函数的实现。
函数重载的原因:在同一作用域内,一组函数的函数名相同,参数列表不同(个数不同/类型不同),返回值可以不同。
Linux环境下,编译器会对函数名重命名。
下面举一个参数类型不同的重载函数的例子:
#include<iostream>
int Add(int ,int);
double Add(doule,double);
void main()
{
cout<<Add(5,10)<<endl;
cout<<Add(5.0,10.0)<<endl;
}
int Add(int x,int y)
{
return x+y;
}
double Add(double a.double b)
{
return a+b;
}
程序运行结果为:
15
15.0
4.C++缺省参数
1>全缺省
int Add(int a=10,int b=20)
{
return a+b;
}
void main()
{
Add();
}
2>半缺省
int Add(int a,int b=2)
{
return a+b;
}
void main()
{
Add(1);
}
注意:c++中,允许在函数说明或者定义一个或者多个的参数指定默认值,但是,要求在一个指定了默认值的右边,不能出现没有指定默认值的参数。
5.指针和引用(概念、使用方法、做参数、做返回值的作用,指针和引用的区别)
(1)指针
概念:指针是用来存放某个变量地址的一种变量,称这个指针指向指向被存放地址的变量。
用法:
<类型>*<指针名1>,*<指针名2>...
例如:
int *pa;//一个指向int型变量的指针
float *pb;//一个指向float型变量的指针
char *pc;//一个指向char型变量的指针
char(*pd)[];//一个指向一维数组的指针
int(*pe)();//一个指向返回值为int型的函数指针
int**pl;//一个指向一个指针的指针,即二级指针
int a(5);
int *p=&a;
//p是一个指向变量a的指针,p的数据值就是变量a的地址
(2)引用
概念:引用是某个已知变量或对象的别名,引用不是变量,他自身没有值,也没有地址值,不占内存空间。
使用
<类型>&<引用名>=<初始值>;
int a(1);
int &b=a;
const int a(1);
//int &b=a;这种引用是错误的
const int &=a;//正确的
(3)指针与引用
例:分别使用参数为指针和引用交换两个数
# define CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<stdlib.h>
using namespace std;
void Swap1(int *x, int *y)
{
int temp;
temp = *x;
*x = *y;
*y = temp;
}
void Swap2(int &x,int &y)
{
int temp;
temp = x;
x = y;
y = temp;
}
int main()
{
int a(1);
int b(2);
Swap1(&a, &b);
cout << a << b << endl;//2 1
Swap2(a,b);
cout << a << b << endl;//1 2
system("pause");
return 0;
}
指针和引用的区别:
指针本身有自己的内存空间,引用没有;
引用必须指向有效的变量,指针可以为空;
引用访问一个变量是直接访问,指针是间接访问;
引用与其指示物不能分离,相对于指针而言,引用更安全。