我已编写此构造函数来初始化字符类型数组
class StudentInfo
{
char* vuId;
public:
StudentInfo(char* vu_Id)
{
setVuId(vu_Id);
}
void setVuId(char* vu_Id)
{
vuId = new char[strlen(vu_Id) + 1];
strcpy(vuId, vu_Id);
}
};
此代码工作正常。但我想初始化而不必调用setVuId函数。反正有吗?
答案 0 :(得分:8)
确定:
#include <string>
class StudentInfo
{
std::string vuId;
public:
explicit StudentInfo(const char* vu_Id) : vuId(vu_Id) {}
};
答案 1 :(得分:0)
如果您可以容忍写时复制和相关的开销,请使用std :: string,否则请使用:
#include <cstring>
class StudentInfo
{
size_t len;
char* data;
public:
StudentInfo(char* vu_Id):
len(vu_Id ? strlen(vu_Id) : 0),
data(len ? (char*)memcpy(new char[len + 1], vu_Id, len + 1) : 0)
{
}
virtual ~StudentInfo() {
delete [] data;
}
}