我今天学习了移动构造函数。我阅读了这个答案,并尝试将其中的移动构造函数示例应用到我的代码中。
class UnicodeString
{
public:
enum ENDIANNESS_TYPE {LITTLE_ENDIAN = 0, BIG_ENDIAN = 1} ENDIANNESS;
bool REPLACE_NON_ASCII_CHARACTERS;
char REPLACE_NON_ASCII_CHARACTERS_WITH;
float VECTOR_RESERVE_COEFFICIENT;
UnicodeString(UnicodeString && Other);
// ...
UnicodeString & operator=(UnicodeString Other);
// ...
private:
std::vector<UnicodeChar> UString;
// ...
}
UnicodeString::UnicodeString(UnicodeString && Other)
{
this->REPLACE_NON_ASCII_CHARACTERS = Other.REPLACE_NON_ASCII_CHARACTERS;
this->REPLACE_NON_ASCII_CHARACTERS_WITH = Other.REPLACE_NON_ASCII_CHARACTERS_WITH;
this->VECTOR_RESERVE_COEFFICIENT = Other.VECTOR_RESERVE_COEFFICIENT;
this->ENDIANNESS = Other.ENDIANNESS;
this->UString = ?????
}
UnicodeString & UnicodeString::operator=(UnicodeString Other)
{
std::swap(?????, ?????);
return *this;
}
但是,与该示例不同,我的类UnicodeString
不仅仅包含一个简单的 C 数组。它包含一个std::vector<>
对象,其元素是我编写的另一个类的实例。
首先,在move构造函数中,如何窃取UString
R-Value传递的另一个对象的向量?
其次,在赋值运算符中,如何有效地交换UString
主UnicodeString
对象的引用和 R-Value 传递的引用?请注意,这。UString
是一个私有属性,因此不能直接从另一个对象访问