- 引用
引用就是对象的别名,一切对引用的操作,就是对原对象的操作。
引用经常存在于函数的参数和返回值当中。
在重载某些操作符时,我们需要引用,例如重载下标操作符[].vector<int> vec{1,2,3,4,5}; vec[2]=10; //这就是对[]进行重载之后,可以对vec的下标为2的变量进行赋值操作
- 参数传递准则
如果我们想要提高效率,且不改变传递对象时,会使用常引用的方式传递,它仅仅需要把引用对象的地址压栈而已;
如果我们采用传值的方式传递对象,例如拷贝构造函数就需要传值的方式,传值方式要调用构造函数和析构函数,因为会在被调函数里重新开辟内存,里面存储与对象相同的值,在调用完毕之后,析构该局部对象。
- 参数传递准则
- 指针
是一种复合数据类型。还可以说到野指针,野指针产生原因,野指针危害,如何避免产生野指针,智能指针。 - 指针与引用的区别
- 指针的操作符是*和->,引用的操作符是.;
- 引用必须在创建时初始化,指针不需要;
- 引用一旦定义,就不能改变,指针不是,指针可以改变指向;
- 引用不能是空,必须与合法的存储单元联系在一起,指针可以指向空。
- 指针是一种数据类型(指针是指向某种类型对象的复合数据类型),在64位操作系统中,指针占8字节,引用不是任何数据类型。
- 有指针为什么要引用?
- C++之父Bjarne Stroustrup曾说过,引入引用的目的主要是为了支持运算符重载;在重载某些操作符时,我们需要引用,例如重载下标操作符[],重载赋值操作符,方便连续赋值。
- 此外,指针经常会带来有严重错误,例如操作野指针,操作空指针,指针越界;引用不会出现这些问题,由于它必须初始化且不能改变指向,所以不会为空,也不会是野指针,所以它的安全性要比指针高。