int & != int
////引用是一种类型
const int ==int
///const 修饰 在非引用 和 指针 情况下 不改变类型
const int & != int &
const int * !=int * ////只有 const 类型 指针能接受 const 类型 地址
非引用类型 必须精确匹配
float i=2.22f;
int & p= i;///error
const int & p=i;//ok,零时对象,也就是说其可以接受 个右值或 不匹配类型
特别需要注意 非const引用必需 是个精确匹配的左值
如
const int a=100;
const int * & p=& a//error,& a是 const int * , 但其地址是个右值,只有 const 才能接受右植
const int * const & p= &a//ok;不是对“const”的引用不能绑定到非 lvalue
int a=10;
int *& b=&a///错误
int *const & b=&a;//ok
但 char * a="good";//"good" 是const char [5]类型---->const char* 但 是 a是char* ;这个是编译器的例外
引用:没有指针语法的指针,非const引用只能接受左值
指针的引用相当于一个指针的指针,常用于函数参数中来改变指针本身的值(外部同时也改变)
如
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
黄大仙 阅读(1202)
评论(1) 编辑 收藏 引用 所属分类:
c++