指针和引用的对比
1. 指针存储的内容是其他对象(变量)的地址,使用指针来访问对象的成员函数和成员变量时,要使用“->”操作符;引用是对象(变量)的别名,使用引用来访问对象的成员函数和成员变量时,就像使用对象本身一样,使用“.”操作符。从这个角度来说,使用引用要比指针简洁得多。
2. 引用被创建的同时必须被初始化我们不能创建一个引用,过一会再初始化它(如果是类的话,在构造函数中使用初始化列表初始化);而指针则可以在任何时候被初始化。
3. 引用只能被初始化一次,一旦它们被初始化为一个特定的对象,它们就不能被改变了;指针则可以随时改变所指的对象。从这个意义上来说,引用像const的指针。
4. 不能有NULL引用,引用必须与合法的存储单元关联;指针则可以是NULL。
5. 引用不能像指针那样new或者delete,从这个意义上来说,它们像一个对象。
6. 当调用函数时,按引用或者指针传送比按值传送要节约一大比开支,同时允许改变实参。如果不允许改变实参,请将它们const。一个细微但是很明智的建议,当不允许函数改变某对象是,用const限定的引用就可以了,当需要改变的时候就用指针。
7. 一个好的原则是尽量使用引用,但有些情况下必须使用指针:如果一个对象需要动态创建或者销毁,应当使用指针。此外,指针可以改变指向的对象,指针可以为空,指针可以参与一些数学运算等,都是使用指针的理由。
评论