首页 >后端开发 >C++ >默认构造函数和析构函数的'=default”和'{}”有什么区别?

默认构造函数和析构函数的'=default”和'{}”有什么区别?

DDD
DDD原创
2024-12-22 12:00:41782浏览

What's the Difference Between

区分默认构造函数和析构函数的“=default”和“{}”

而“=default”和“{}” “对于虚拟析构函数来说似乎可以互换,它们在用于默认构造函数和非虚拟构造函数时表现出显着差异析构函数。

默认构造函数

对于默认构造函数,“=default”显式指示编译器生成默认构造函数。相反,“{}”会产生用户提供的默认构造函数,从而改变了类的琐碎性。普通类允许高效的内存操作,但用户提供的函数(包括空的“{}”默认构造函数)会删除此分类。

析构函数

在这种情况下在虚拟析构函数中,“=default”和“{}”的差异很小。但是,对于非虚拟析构函数,“=default”表示编译器生成的析构函数,而“{}”表示用户提供的析构函数。这种区别对于确定类的琐碎性仍然至关重要,因为用户提供的析构函数会阻止琐碎分类。

因此,在“=default”和“{}”之间进行选择时,请考虑该类是否应被视为琐碎类。 “=default”通过将函数生成委托给编译器来保持琐碎性,而“{}”创建用户提供的函数,影响类的琐碎性状态。

以上是默认构造函数和析构函数的'=default”和'{}”有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn