我声明了一个类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应该首先调用Uncopyable' 复制对应方,但是Uncopyable'copy-ctor和operator=是私有的,所以这会失败并且会出现错误,这会发生在compile-time.
我的问题是为什么会发生这种情况compile-time?