?? int & != int
?? ////引用是一種類(lèi)型
?? const int ==int
///const 修飾 在非引用 和 指針 情況下? 不改變類(lèi)型
?? const int &? != int &
?? const int *?? !=int *???////只有 const 類(lèi)型 指針能接受 const 類(lèi)型 地址
??非引用類(lèi)型 必須精確匹配
???float ?i=2.22f;
?? int & p= i;///error
?const int & p=i;//ok,零時(shí)對(duì)象,也就是說(shuō)其可以接受 個(gè)右值或 不匹配類(lèi)型
?? 特別需要注意 非const引用必需 是個(gè)精確匹配的左值
如?
?? const int a=100;
?? const int * &?p=& a//error,& a是 const int * ,?但其地址是個(gè)右值,只有 const 才能接受右植
?? const int * const & p= &a//ok;不是對(duì)“const”的引用不能綁定到非 lvalue
? int a=10;
int *& b=&a///錯(cuò)誤
int *const & b=&a;//ok
但 char * a="good";//"good" 是const char [5]類(lèi)型---->const char* 但? 是 a是char* ;這個(gè)是編譯器的例外
?
引用:沒(méi)有指針語(yǔ)法的指針,非const引用只能接受左值
指針的引用相當(dāng)于一個(gè)指針的指針,常用于函數(shù)參數(shù)中來(lái)改變指針本身的值(外部同時(shí)也改變)
如
?????? void f(int *&p)
{
p=new int [5];//外部也改變了
}
?????????????void f(int **p)
{
*p=new int [5];//外部也改變
}
??????????????? void f(int * p)
{
p=new int [5];//外部不改變
}
非const 指針都可以給void *;
void *p =(int) 0x3444;
posted on 2006-05-27 14:21
黃大仙 閱讀(1233)
評(píng)論(1) 編輯 收藏 引用 所屬分類(lèi):
c++