c++中的char初始化构造函数

char initialization constructor in c++

本文关键字:构造函数 初始化 char 中的 c++      更新时间:2023-10-16

我已经编写了这个构造函数来初始化字符类型数组

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函数的情况下进行初始化。有办法做吗?

确定:

#include <string>
class StudentInfo
{
  std::string vuId;
public:
  explicit StudentInfo(const char* vu_Id) : vuId(vu_Id) {}

};

如果您可以容忍写时复制和相关开销,请使用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;
  }
}