-
Notifications
You must be signed in to change notification settings - Fork 60
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
定义了析构函数,就必须删除移动构造函数、移动赋值函数、拷贝构造函数、拷贝赋值函数? #83
Comments
有些持有“资源”的类,根本就没法定义拷贝构造函数,必须删除。 把一个可以拷贝的资源类,删除四大函数,也不会有错。 所以是我说的有点问题,准确的来说应该是:
就好比专业的律师会告诉你:插座里如果没有电,那么可以用手摸;插座里如果有电,那就不能用手摸。 更糟糕的是,它们官方律师口中的“定义”实际上包含“删除”,就官方话术中,“删除”也是定义的一种,搞笑吧。 |
这是来自QQ邮箱的假期自动回复邮件。您好,我最近正在休假中,无法亲自回复您的邮件。我将在假期结束后,尽快给您回复。
|
“定义”一词包含的情况很多。我们是否该用更通俗的“手写函数体”来避免误解? |
我觉得“手写函数体”更是一个容易混淆的描述,
这里我觉得小彭老师想说是“自定义了析构函数”的意思吧?想要表达的核心思想是当一个类持有需要在析构过程中额外手动处理的资源,那么这个类大概率不能被简单地执行赋值、拷贝等操作,所以从安全的原则上来看,先一杆子打死把这四个函数全给删除了(后面描述改成了删除或自定义),用到再加。 |
不算。(莫非我们居然没有一个简单的词组描述“手写花括号函数体”吗?) |
这确实是我比较讨厌 C++ 的一个点,“定义”在标准里面是通过黑名单式地这么说:
你说的这个“花括号函数体”也是个不错的描述吧。 |
深入理解析构函数与生命周期中
定义了析构函数,就必须删除移动构造函数、移动赋值函数、拷贝构造函数、拷贝赋值函数
根据三五法则,不应该是同时定义剩下的拷贝构造函数、拷贝赋值函数或者移动构造函数、移动赋值函数、拷贝构造函数、拷贝赋值函数吗?为什么是删除呢
The text was updated successfully, but these errors were encountered: