copy-ctorクラスのとを宣言しoperator= privateて、そのオブジェクトをコピー不可にし、両方の定義を提供しません。クラスがこれらのオブジェクトをfriends呼び出すと、エラーが発生しますよね?copying behaviorlink-time
class A
{
public:
...
private:
A(const &a);
A& operator=(const &a); //just declarations, no definitions
};
しかし、エラーを から に移動するためにlink-time、compile-time私は本からこれを行うことができることを学びました:
class UnCopyable
{
public:
...
private:
Uncopyable(const &u);
Uncopyable& operator=(const &u); //also no definitions
};
次にA継承させUncopyable、
class A: private Uncopyable
{
...
};
そして、誰かが でコピーを呼び出した場合、A最初に のコピー相手をA呼び出す必要がありますが、とはプライベートであるため、これは失敗し、 で発生するエラーが発生します。UncopyableUncopyablecopy-ctoroperator=compile-time
私の質問は、なぜそれが起こるのcompile-timeですか?