有一个指针变量:char * p,怎么样判断p指向的是字符串常量,还是new char[]? class MyString{ private: char * m_pData; public: MyString(){} MyString(char * pStr = NULL) { m_pData = pStr;//怎么样判断pStr是一个字符串常量? } ~MyString() { delete m_pData;//假如m_pData指向一个字符串常量,则此处有异常; } }; void main() { char * pStr = new char[20]; MyString mstr(pStr); //运行正常 MyString str("Hello world"); //析构时,报错。 }
解决方案:10分
没有直接的判断方法
一个可能不是很好的办法就是去写这个指针,同时捕捉异常,假如出现异常的是就是常量区的字符串
一个可能不是很好的办法就是去写这个指针,同时捕捉异常,假如出现异常的是就是常量区的字符串
解决方案:10分
建议LZ在构造函数中,都使用动态分配,然后将参数字符串复制到分配的内存中