想把第二个参数默认赋值为空,怎么会提示这种错误呢?src/Xcar.cpp:51: default argument given for parameter 2 of `int
Xcar::execCMD(const char*, char* = 0)'
inc/Xcar.h:99: after previous specification in `int Xcar::execCMD(const char*,
char* = 0)'
Xcar::execCMD(const char*, char* = 0)'
inc/Xcar.h:99: after previous specification in `int Xcar::execCMD(const char*,
char* = 0)'
->
Xcar::execCMD(const char*, char* pstr= 0)'
用0代替NULL也不是好习惯
用0代替NULL也不是好习惯
这个我可不同意噢。下面是stl中auto_ptr的源码:(vs7.1的memory文件509行)
void reset(_Ty* _Ptr = 0)NULL是这样的东西:#define NULL 0
我们应该避免使用NULL。写标准c++程序。
linux下根本没有NULL这个宏的。我觉得用宏不是一个好习惯噢。宏的几点弊病我就不说了。
CFtp::execCMD(const char*, char* = 0)'
inc/Xcar.h:99: after previous specification in `int CXcar::execCMD(const char*,
char* = 0)'
.h
99 int execCMD(const char* cmd_in, char* param = 0);
.cpp
54 int Xcar::execCMD(const char* cmd_in, char* param = 0)
1.指向常量的指针表示指向的对象是常量,指向的内容不可以修改,但指针值本身可以修改
eg:
char ch[5]="abcd";
const char* pStr=ch; *pStr='m'; //错误赋值
pStr="sdfjkljl"; //正确赋值
2.指针常量表示指针本上是常量,指向的内容可以修改,但指针值本身不能修改
eg:
char ch[5]="abcd";
char *const pStr=ch; pStr="sdfjkljl"; //错误赋值
*pStr='m'; //正确赋值