应该如何设置类的char*成员?使用strcat还是别的什么?

bma*_*man 0 c++ string

我有一个非常简单的类,有一些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?
}
Run Code Online (Sandbox Code Playgroud)

Alo*_*ave 11

强烈建议你放弃char *使用std::string.

使用char *as成员,你需要打扰分配(在构造函数中)并自己将内存(在析构函数中)释放到指针.此外,您需要管理例外,并在每次访问时对基础数据进行手动管理.
此外,您必须确保为您的班级遵循三级规则.

总之,有太多的地方你可以轻松地在脚(或头部)射击自己,所以最安全和最好的方法是使用std::string会员并省去所有的麻烦.