参数const XX* pXX与参数const XX& xx的注意点
编者:李国帅
qq:9611153 微信lgs9611153
时间:20
背景:
VC中指针和引用是容易出错的地方,说起来简单,用起来需要小心;灵活运用可以避免错误。
const XX*只能保证指针pXX不被改变,不能保证里面的数据不被改变
const XX& xx参数可以保证对象xx内部数据不能改变
总结:
typedef struct xx
{
int a;
unsigned char * b;
}XX;
int func(const XX* pXX)//const XX*只能保证指针pXX不被改变,不能保证里面的数据不被改变
{
strcpy((char*)pXX->b,"54321");//成员的优先级高于前置括号,一定要小心。
pXX = NULL;//仅仅是副本指针变化,原件没有变化
return 0;
}
int funcObject(const XX& xx)
{
//strcpy(xx.b,"54321");//错误不能改变整个对象
//xx.a = 0;
return 0;
}
int main(int argc, char* argv[])
{
xx stcc;
stcc.b = new unsigned char[10];
strcpy((char*)stcc.b,"12345");
//const char* p = (char*)stcc.b;
//cout<<p<<endl;
func(&stcc);
delete stcc.b;//"54321"
system( "PAUSE" );
return 0;
}