我认识的指针和引用的比较
2014-08-30 12:41
197 查看
指针和引用的比较
1.引用必须有初始值
string &rs;//error
string *ps;//ok
{
string s("xyz");
string &s1=s;
}//ok
2.reference比pointer更有效率
原因就是:pointer需要检查是否为NULL
void print_int(const int & ri){
cout<<ri<<endl;
}
void print_int(const int *pi){
if(pi)
cout<< *pi << endl;
}
3.pointer可以被重新赋值,指向另一个对象,reference总是指向最初指向的那个对象
string s1("nancy");string s2("cancy");
string &rs=s1;
string *ps=s1;
rs=s2;//此时rs仍然指向s1只是里面的内容被s2替换了,即s1=“cancy”
ps=&s2;//ps此时改变了指向,指向了s2
另外在使用指针和引用的时候,当我们确定某一个对象会实时存在时,建议用引用。
1.引用必须有初始值
string &rs;//error
string *ps;//ok
{
string s("xyz");
string &s1=s;
}//ok
2.reference比pointer更有效率
原因就是:pointer需要检查是否为NULL
void print_int(const int & ri){
cout<<ri<<endl;
}
void print_int(const int *pi){
if(pi)
cout<< *pi << endl;
}
3.pointer可以被重新赋值,指向另一个对象,reference总是指向最初指向的那个对象
string s1("nancy");string s2("cancy");
string &rs=s1;
string *ps=s1;
rs=s2;//此时rs仍然指向s1只是里面的内容被s2替换了,即s1=“cancy”
ps=&s2;//ps此时改变了指向,指向了s2
另外在使用指针和引用的时候,当我们确定某一个对象会实时存在时,建议用引用。