有一个指针变量: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在构造函数中,都使用动态分配,然后将参数字符串复制到分配的内存中