赞
踩
定义:
命名空间域是随标准C++而引入的。它相当于一个更加灵活的文件域(全局域),可以用花括号把文件的一部分括起来,并以关键字namespace开头给它起一个名字:
namespacename1
{
inta = 0;
}
namespacename2
{
inta = 1;
}
标准C++库中的所有组件都是在一个被称为std的名字空间中声明和定义的。在采用标准C++的平台上使用标准C++库中的组件,只要写一个using指示符:
using namespace std; 就可以直接使用标准C++库中的所有成员。
或者 std::成员 的方式也可以使用C++库里的成员。
其中,::是作用域解析符
namespace std //std是C++标准库的命名空间
{
//标准库成员
}
下面给出一个简单的C++程序:
#include <iostream>
using namespace std;
namespace A1
{
int a = 10;
int b = 100;
}
namespace A2
{
int a = 20;
}
int b = 30;
int a = 50;
int main()
{
int a = 40;
cout<<a<<endl; //40
cout<<::<<a<<endl; //50
cout<<A1::a<<endl; //10
cout<<A2::a<<endl; //20
return 0;
}
在上述程序中,若前面没有引 using namespace std; 这句话,则输出时应该为:
std::cout<<"hello"<<std::endl;
以表明其所在的作用域。
再给出一个简单程序:
namespace AA1
{
int a = 1;
namespace AA2
{
int a = 2;
namespace AA3
{
int a = 3;
}
}
}
int main()
{
cout<<AA1::a<<endl;
cout<<AA1::AA2::a<<endl;
cout<<AA1::AA2::AA3::a<<endl;
return 0;
}
cout是标准输出流对象,<<是输出操作符;
cin是标准输入流对象,<<是输入操作符;
endl是换行操作符。
这些都属于C++标准库,所以都在std的命名空间里。
定义:
函数在同一个作用域内,函数名相同,参数不同【参数类型、参数个数】,返回值可相同也可不同。
下面举一个例子,代码如下:
void f(int i)
{
}
void f(char ch)
{
}
这里两个函数的函数名相同,返回值类型相同,参数个数相同,参数类型不同,属于函数重载。
再举一个例子,代码如下:
void f(int i,char a)
{
}
void f(char a,int i)
{
}
这里的两个函数的函数名相同,返回值类型相同,参数个数相同,参数类型不同,属于函数重载。
那么,在C++中,函数支持重载的原因是什么呢?
因为函数名的修饰规则,即命名规则。
int Add1(int a = 10, int b = 20)
{
return a+b;
}
int main()
{
cout<<Add1()<<endl; //30
cout<<Add1(20)<<endl; //将20传给a,Add值为40
return 0;
}
2.半缺省
代码如下:
int Add2(int a, int b = 20)
{
return a+b;
}
int main()
{
cout<<Add2(10)<<endl; //将10传给a,Add值为30
cout<<Add1(10,30)<<endl; //40
return 0;
}
引用的定义:
引用不是定义一个新变量,而是给一个已经定义的变量重新取一个名字。
代码如下:
int a = 10;
int& b = a;
此处的b就是a的一个别名,a、b指向同一空间 。
注意:
①一个变量可以有多个别名。
②引用只能在初始化时引用一次。
代码如下 :
void swap(int& l, int& r)
{
int tmp = l;
l = r;
r = tmp;
}
引用的作用:
(1)提高效率
【const引用】
①代码如下:
const int d3 = 1;
const int& d4 = d3;`
②常量具有常性
int d1 = 4;
const int& d4 = d3;
d1 = 5; //d1改变d2的值
const int& d6 = 5;
③隐式转换
double d7 = 1.1;
const int& d8 = d7;
(2)作参数
①值传递
②引用传递
int& Add(int a , int b)
{
int c = a+b;
return c;
}
注意:除了作用域还存在,便可用引用。
(3)作返回值
注意:不要返回一个临时变量的作用,如果返回对象出了当前函数的作用域依旧在,则最好使用引用返回,更高效。
引用和指针的区别:
(1)引用只能在定义时初始化一次,之后不能改变指向其他变量;指针变量值可变。
(2)引用必须指向有效的变量,指针可以为空。
(3)sizeof指针对象和引用对象的意义不一样。sizeof引用是所指向变量的大小;sizeof指针是对象地址大小。
(4)指针和引用自增(++)自减(–) 意义不一样。
(5)相对而言,引用比指针安全。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。