我想知道为什么这段代码可以正确编译。由于复制构造函数和赋值运算符被删除,我认为这些机制不应该存在。
我在想,
我在想,
main()
中的构造被编译器替换为某种由 Object
自身有效地创建的 emplace
构造……但我无法弄清楚为什么或者如何发生这种情况。struct Object
{
private:
friend struct ObjectFactory;
Object() {}
Object(const Object& other) = delete;
Object& operator=(const Object&) const = delete;
};
struct ObjectFactory
{
static Object CreateObject() { return Object(); }
};
int main()
{
Object object1 = ObjectFactory::CreateObject();
Object object2 ( ObjectFactory::CreateObject() );
Object object3 { ObjectFactory::CreateObject() };
}