【发布时间】:2015-04-09 01:54:46
【问题描述】:
class MyString {
private:
char *m_pchString;
int m_nLength;
public:
MyString(char* pchString="0") { //problem on this parameter
m_nLength = strlen(pchString)+1;
m_pchString = new char[m_nLength];
strncpy(m_pchString, pchString, m_nLength);
m_pchString[m_nLength-1] = 0;
}
~MyString() {
delete[] m_pchString;
m_pchString = 0;
}
char* GetString() {return m_pchString;}
int GetLength() {return m_nLength;}
};
如果我遵守了这个,编译器会给我一个警告:
警告:不推荐将字符串常量转换为 'char*'
除非我将参数从char *pchString = "0"修改为const char *pchString = "0"
为什么参数中的默认char*必须是const?
【问题讨论】:
-
这与默认参数无关。 C++ 中的字符串文字是
const,无论你在哪里使用它们。 -
@Juen Khaw,您可能想将“关于我:”更改为
const char *chStat = "Begineer";:) -
@vsoftco,大声笑,你把我搞砸了:P
标签: c++ c++11 visual-c++