c++中的char初始化构造函数
char initialization constructor in c++
我已经编写了这个构造函数来初始化字符类型数组
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;
}
}
相关文章:
- 有没有一种代码密度较低的方法来使用非默认构造函数初始化数组?
- 如何在 C++ 中使用它的构造函数初始化 unique_ptrs 的 2D 向量?
- 在C++中使用默认构造函数初始化对象的不同方法
- 使用默认构造函数初始化对象的不同方法
- 我们可以用参数化构造函数初始化结构的数组吗?
- 有没有办法使用该类的构造函数初始化另一个类的私有部分内的对象数组?
- 类内初始化与构造函数初始化列表的顺序
- 通过 C++ 中的重载构造函数初始化未知类型的变量
- 使用复制构造函数初始化 new[]
- 如何从子类的构造函数初始化父类的私有成员
- 在构造函数初始化列表中使用 std::variant
- 使用构造函数初始化结构还是在之后设置其值更好?
- C++ 没有匹配的构造函数初始化 []
- 我正在使用dev c ++,但收到错误(C++98'array'必须由构造函数初始化)
- 使用所述填充构造函数初始化向量中的向量
- 如何同时创建一个具有两个或多个构造函数初始化的对象
- 在 new 关键字中,由默认构造函数初始化的类中的元素是否也使用 new 关键字在C++?
- 这是使用构造函数初始化数组对象的最佳方法吗?
- 内置类型的构造函数初始化
- 构造函数初始化和对象损坏