假设字符串类具有私有数据成员,如下所示:
char *strval;
int length;
Run Code Online (Sandbox Code Playgroud)
以下字符串类的构造函数代码是否正确?如果不正确,为什么?
string::string(const char* s):length(strlen(s))
{
strval = s;
}
Run Code Online (Sandbox Code Playgroud)
我的回答是strlen()正在评估指针值,但这听起来不对.
给出的构造函数代码是正确的,因为它将为大多数输入成功编译和运行.然而,至少有几个原因,它的风格很差:
s是NULL(但这可以记录为非法输入)