调整构造函数中的字符串成员大小

hg_*_*git 0 c++ string constructor c++11

我要确保在施工期间弦线构件的尺寸是固定的.但是,他们可以在构建完成后增加它们的大小,然后在程序中,用户选择向其添加更多文本.

class A {
    std::string name;
    std::string desc;
    int num;

  public:
    A(int, std::string, std::string);
    .....
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我这样做 -

A(int n, std::string name, std::string d) : 
    num(n),
    name(name),
    desc(d) 
{
    ....
}
Run Code Online (Sandbox Code Playgroud)

我将不得不resize()在构造函数体内调用.这意味着在构造期间的某个时间存在完整的弦长.假设我希望初始大小为5,并且用户传递20个字符串,在构造期间和之前resize(),字符串将包含20个字符,对吧?

现在我正在考虑这样做 -

A(int n, std::string name, std::string d) : 
    num(n)
{
    name = name;
    desc = d;
    name.resize(5);
    desc.resize(5);
    ....
}
Run Code Online (Sandbox Code Playgroud)

但这会是一样的吗?

我应该调用resize()传递的参数本身吗?还是有更好的方法..

mic*_*srb 8

那样的构造函数怎么样:

A::A(int n, const std::string &name, const std::string &d) :
    n(n), name(name, 0, 5), d(d, 0, 5)
{
}
Run Code Online (Sandbox Code Playgroud)

字符串永远不会被复制.它们通过引用获取,并且使用最多前5个字符构造副本.

它使用子串构造函数(数字3).