`std :: wstring`是一种带引用计数的类吗?

时间:2015-09-23 14:00:21

标签: c++

一些简单的问题:

  1. std::wstring是一类引用计数为std::vector的类吗?在中,我可以将它作为类成员而不指定其大小吗?
  2. 当我这样做时:std::wstring string2 = string1;(其中string1也是wstring并且有一个值),它会复制实际数据还是只复制引用类?
  3. 我曾经知道这一点,但我忘记了。

2 个答案:

答案 0 :(得分:2)

  

std :: wstring是一种像std :: vector这样的引用类吗?如果没有指定其大小,我可以将它作为类成员吗?

是的,它是一个"引用类",您可以将它作为类成员而不指定其大小。

  

当我这样做时:std :: wstring string2 = string1; (其中string1也是一个wstring并且有一个值),它会复制实际数据还是只复制引用类?

这将复制数据,因为您正在调用wstring类中定义的赋值运算符。

如果你想改变"引用类"考虑使用指针。

答案 1 :(得分:1)

  1. 我不太确定你是什么意思"引用类"但是,你可以将它作为一个类成员而不指定大小:

    class MyClass
    {
    private:
        std::wstring _str;
    }
    
  2. 它会复制实际数据,你将有2个不同的字符串对象,内容相同。

  3. 值得注意的是std::stringstd::wstringstd::u16stringstd::u32string只是std::basic_string<some_exact_type>的typedef,所以它们都是一样的方式。