的高效/快速複製對於定製使用,我已將std::vector
繼承自定義class Vector
。對於我的要求public
inheritance is ok。標準容器如std :: vector
其中一個目的是避免複製矢量數組的多次,所以我決定這個自定義類是「所有權」的基礎。
Vector<A> vA1(100); // vA1 is allocated A[100]
Vector<A> vA2 = vA1; // vA2 refers to original A[100] and ...
// ... vA1 is now blank which is expected
這是它是如何對C++ 03實現的:
template<typename T>
struct Vector : std::vector<T>
{
// ... other constructors
Vector (const Vector ©) // copy constructor
{
this->swap(const_cast<Vector&>(copy)); // <---- line of interest
}
// 'operator =' is TBD (either same as above or unimplemented)
};
我是不是違反任何語言規則/特徵/慣例?這段代碼有什麼不好的地方?
編輯:我在下面的答案中添加了我的新方法(這裏是它的工作demo)。
如果你要重載'OPER ator =',它應該與'='具有相同的語義。你的不是。同上你的拷貝構造函數。 –
@DavidSchwartz,是的,我還沒有決定'operator ='並更新了這個問題。目前,主要關注的是複製。 – iammilind
爲什麼'const Vector&copy'和演員?爲什麼不只是「Vector(Vector&victim)」? –