今天封装本身的类型的转换的时候发现,const int* 的返回值一直是空,即实际未生效函数
int StrToConCh(const string strsource,const char* outCh) { outCh = strsource.c_str(); return 1; }
const char* tempSource = NULL; int ret = otypeConversion.StrToConCh(strsource,tempSource);
改为这样跟代码的时候,发现进入被调函数时值是改变的指针
想一想看swap函数blog
void Swap(int * pia, int * pib) { int temp(*pia); *pia = *pib; *pib = *temp; }
是能够交换成功的,可是实际上注意:::!!!!内存
进入被调pia和pib也是局部变量,只是解引用以后局部临时变量的值和主函数变量里值同样,指向同一块内存,实现了对那块内存的修改string
而若是是直接改变指针的值,实际上只是改变了局部变量的值,主函数的指针变量指向的地址值不变,所以如下的修改不能实现交换io
void Swap(int * pia, int * pib) { int temp(pia); pia = pib; pib = temp; }
而加了const 以后的指针,如const int* 表明指针指向的值不能修改,所以只能改变局部指针变量的值(指向新地址),可是主函数(调用函数)的变量值没变,仍是指向原地址(固然原地址的有const修饰,更加不可能改变)class