gpt4 book ai didi

c++ - 如何初始化一个以字符串为参数的构造函数?

转载 作者:可可西里 更新时间:2023-11-01 16:26:34 26 4
gpt4 key购买 nike

我不确定我是否使用了正确的术语,但问题是我如何正确地制作一个将字符串作为参数的构造函数?

我习惯于在构造函数中使用 const char * 而不是字符串。

通常我会这样做:

Name(const char* fName, const char* lName)
: firstName(0), lastName(0)
{
char * temp = new char [strlen(fName) + 1];
strcpy_s(temp, strlen(fName) + 1, fName);
firstName = temp;

char * temp2 = new char [strlen(lName) + 1];
strcpy_s(temp2, strlen(lName) + 1, lName);
lastName = temp2;
}

如果构造函数是这样的怎么办:

 Name(const string fName, const string lName) { }

我还要做基础成员初始化吗?我还需要在构造函数的基础中使用字符串复制吗?

最佳答案

使用std::string和初始化列表:

std::string fName, lName;

Name(string fName, string lName):fName(std::move(fName)), lName(std::move(lName))
{
}

在这种情况下,您不需要使用非常简单的指针,不需要分配内存、复制字符和最后取消分配。此外,由于 std::string 是可移动的,此新代码有机会利用移动而不是复制的优势。阅读 this 也很有用.

等等....

关于c++ - 如何初始化一个以字符串为参数的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19800939/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com