【发布时间】:2021-01-15 16:35:08
【问题描述】:
我想知道为什么这段代码可以正确编译。由于删除了复制构造函数和赋值运算符,我认为这些机制将不可用。
我认为main() 中的构造被编译器替换为某种emplace 构造,该构造由Object 本身有效地制作......但我不知道为什么或如何会发生这种情况。
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() };
}
【问题讨论】:
标签: c++