1、命名空间:使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染。关键字:namespace Eg: namespace N {int a = 0};
// 命名空间中可以定义变量/函数/类型。
//注意:一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中
命名空间的使用有三种方式:1~加命名空间名称及作用域限定符 N::d;(写在函数内) 2~使用using将命名空间中某个成员引入 using N::a;(写在函数外) 3~使用using namespace 命名空间名称 引入 using namespace N;
2、缺省参数:缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参。

分类:
* 全缺省参数:

* 半缺省参数 :

注:



4、引用:引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。注意:引用类型必须和引用实体是同种类型的
基本语法:类型& 引用变量名(对象名) = 引用实体;

引用特性 :
* 引用在定义时必须初始化。
* 一个变量可以有多个引用。

常引用:

引用的使用场景:
* 做参数:
void Swap(int& left, int& right)
{
int temp = left;
left = right;
right = temp;
}
* 做返回值:
int& Count()
{
static int n = 0;
n++;
return n;
}
* 注:如果函数返回时,出了函数作用域,如果返回对象还在(还没还给系统),则可以使用
int& Add(int a, int b)
{
int c = a + b;
return c;
}
int main()
{
int& ret = Add(1, 2);
Add(3, 4);
cout << "Add(1, 2) is :"<< ret <<endl;
return 0;
}
解释:调用Add函数时,会在堆区建立栈帧,出了Add函数的作用域,那个栈帧就销毁了,c所在的空间就返还给操作系统了。该函数是返回引用,只是返回了一个c所在空间的别名,即ret接收到的是和C共用C所在的空间。但是如上所说那块空间已经返还给系统了,我们已经无法再访问了,所以该操作非法了。而static静态变量和全局变量则可以返回引用。
5、传值、传引用比较 :
以值作为参数或者返回值类型,在传参和返回期间,函数不会直接传递实参或者将变量本身直 接返回,而是传递实参或者返回变量的一份临时的拷贝,因此用值作为参数或者返回值类型,效率是非常低下的,尤其是当参数或者返回值类型非常大时,效率就更低。
传引用则是直接给变量取别名,不需要拷贝,可以直接使用原变量的值,效率就大大提升了。
6、引用和指针的区别
7、内联函数:
8、范围for的语法 :
void TestFor()
{
int array[] = { 1, 2, 3, 4, 5 };
for(auto& e : array)
e *= 2;
for(auto e : array)
cout << e << " ";
return 0;
}
本文介绍了C++中的关键概念,包括命名空间的使用,如局部化标识符名称以避免命名冲突,以及三种命名空间的使用方式。接着讨论了缺省参数的规则,如全缺省和半缺省参数的设定。此外,解释了函数重载的概念,允许同名函数通过不同的参数列表实现多态性。然后详细阐述了引用,作为已有变量的别名,强调了引用初始化和不可变性的特点。最后提到了内联函数的作用,用于提高程序效率,并简单提及了范围for循环在遍历数组或容器时的应用。

1662

被折叠的 条评论
为什么被折叠?



