我想使抽象基類不可複製,並強制從它派生的任何類都是不可複製的。下面的代碼使用noncopyable.hpp中定義的Boost的不可複製性,但仍然允許派生類D定義複製構造函數。禁止在繼承類中定義拷貝構造函數
class noncopyable
{
protected:
noncopyable() {}
~noncopyable() {}
private: // emphasize the following members are private
noncopyable(const noncopyable&);
const noncopyable& operator=(const noncopyable&);
};
class D : noncopyable
{
public:
D() { }
D(const D&) { }
};
int main()
{
D a;
D b(a);
return 0;
}
此代碼可以編譯和運行(http://ideone.com/g4gGLm),當我希望它拋出約D的拷貝構造函數編譯時錯誤。也許我錯誤地解釋了這個不可複製的類是做什麼的。如果是這樣,有沒有辦法強制派生類不定義複製構造函數? (答案可以使用C++ 11,但最好不要增加)
我現在明白了非拷貝是什麼(謝謝你的E類例子)。謝謝 – steve9164 2013-03-27 10:52:08