1.可以使用using将命名空间中单个变量引入
#include <iostream>
namespace N
{
int a;
}
using N::a;//将命名空间中的成员a引入
int main()
{
std::cout<<a<<std::endl;
return 0;
}
2.缺省参数不能在函数声明和定义中同时出现
缺省参数只能在函数声明时出现(优选),或者函数定义时出现(二者之一均正确)
避免二义性:当函数声明和定义里都有缺省参数,且参数值不同时,编译器就不知道该用哪个值
代码的清晰性和可维护性:为了让代码更清晰、易维护,最好把缺省参数放在函数声明处。这样,调用者只需查看函数声明就能知道有哪些缺省参数
3.缺省值可以是全局变量的原因
函数缺省值的求值发生在函数调用的时候,而不是函数定义或声明的时候。当调用一个带有缺省参数的函数且没有为该参数提供显式值时,编译器会在调用点使用缺省值的表达式来确定实际传递给函数的值。由于全局变量在程序的整个生命周期内都存在,并且其存储位置和值在程序运行期间是固定的,所以在函数调用时可以可靠地获取全局变量的值作为缺省参数。
4.仅仅是返回类型不同,不能构成重载
5.在函数前加“extern C”后,该函数便不能支持重载了
在函数前加“extern C”,意思是告诉编译器,将该函数按照C语言规则来编译。
6.引用和指针的区别(重要)
1、引用在定义时必须初始化,指针没有要求。
2、引用在初始化时引用一个实体后,就不能再引用其他实体,而指针可以在任何时候指向任何一个同类型实体。
3、没有NULL引用,但有NULL指针。
4、在sizeof中的含义不同:引用的结果为引用类型的大小,但指针始终是地址空间所占字节个数(32位平台下占4个字节)。
5、引用进行自增操作就相当于实体增加1,而指针进行自增操作是指针向后偏移一个类型的大小。
6、有多级指针,但是没有多级引用。
7、访问实体的方式不同,指针需要显示解引用,而引用是编译器自己处理。
8、引用比指针使用起来相对更安全。
7.auto不能推导的场景
编译器在编译期会将auto替换为变量实际的类型
1.auto不能作为函数的参数,编译器不能推导出类型
2.auto不能直接用来声明数组,无法确定数组的大小