指针和引用的区别

    技术2022-05-11  149

    1.       指针可以为空(null)但没有空引用,引用必须初始化,并关联某个具体存在的对象。 char *pc = 0;          // set pointer to null char& rc = *pc;        // make reference refer to                        // dereferenced null pointer   string& rs;             // error! References must                         // be initialized   string s("xyzzy"); string& rs = s;         // okay, rs refers to s   2.       指针初始化后可以改变,使它指向其它对象,但引用初始化后就一直与初始化它的对象关联,而不能改变。 string s1("Nancy"); string s2("Clancy");   string& rs = s1;         // rs refers to s1 string *ps = &s1;        // ps points to s1   rs = s2;                 // rs still refers to s1,                          // but s1's value is now                          // "Clancy"   ps = &s2;                // ps now points to s2;                          // s1 is unchanged   3.       应该使用引用的一种情况:当实现运算符(operator)时,返回一个引用而不要返回一个指针。 vector<int> v(10);       // create an int vector of size 10;                          v[5] = 10;               // the target of this assignment is                          // the return value of operator[] 如果 operator[] 返回一个指针,则有:    *v[5] = 10; 这使*v[5]看起来像个指针容器。   4.  建议:如果不能确保所关联的对象一直存在,或是不能肯定会一直关联此对象,那么最好使用指针,否则可以考虑引用。 

    最新回复(0)