如何设置类的字符*成员?使用 strcat 或其他东西
How to set a char* member of a class? Using strcat or something else?
我有一个非常简单的类,有一些char*成员。strcat
是设定价值观的最佳方式吗?
class CImage {
public:
CImage() {};
char* Name;
};
void AddImage(const char* Name)
{
CImage* img = new CImage();
strcpy(img->Name, Name); // Is this correct or the best way?
}
强烈建议您放弃char *
并使用std::string
。
将char *
作为成员,您需要自己为将内存(在构造函数中)和解除分配内存(在析构函数中)分配给指针而烦恼。此外,您需要管理异常,并在每次访问基础数据时对其进行手动管理。
此外,您还必须确保为您的班级遵循三条规则。
简而言之,有太多的地方可以轻松射中自己的脚(或头部),因此最安全,最好的方法是使用std::string
作为成员,省去所有麻烦。
您必须首先动态分配足够的内存来存储字符串,如下所示
img->Name = new char[strlen(Name) + 1];
strcpy(img->Name, Name);
如果这样做,则应使用delete[]
释放内存
此外,您应该考虑在构造函数中解封字符串及其初始化。
但是,存储字符串的最佳方法是std::string
相关文章:
- 在运算符重载定义中使用成员函数(const错误)
- 使用成员在类中创建 lambda 表达式
- 在具有全局类型def的类中使用成员函数指针
- 使用成员函数和存储值定义书籍类
- 如何使用成员 c++ 使用 gtest 测试基于私有类的行为
- 使用成员初始值设定项列表时没有匹配的函数调用错误
- 使用成员函数创建std::函数不会编译
- 如何在静态函数中使用成员函数数组
- 使用成员函数打印对象
- 使用成员函数调用可变参数模板函数
- 使用成员的地址初始化基类是否合法?
- 使用成员初始值设定项时 gcc 中可能存在的错误
- 在静态成员函数中无效使用成员“xx::x”
- 使用成员函数更改对象或返回并分配它是否被认为是更好的做法?
- 如何在单独文件中定义的成员函数中使用成员变量
- 如何在 Arduino 中使用 C++ 成员函数作为中断处理程序?
- 在默认初始值设定项中使用 lambda 与使用成员函数
- C++ 使用成员函数返回结构体指针属性的值
- 使用使用成员类型别名的构造函数来推论类模板参数
- 尝试在类数组上使用成员函数