删除构造函数vs没有构造函数

时间:2017-08-24 15:54:07

标签: c++11

最近我看到了一位同事的设计。在这样的设计中,他提出了一个看起来像这样的课程:

class A {
    A() = delete;
    A (const std::string &strA, const std::string &strB) noexcept;
}

让我感到惊讶的是:在这里明确删除' A()'是否真的有意义?构造

为了弄清楚是否有任何影响,如果没有明确删除这样的构造函数(但它根本就没有),我打开Eclipse并进行了测试,结果发现(在我的情况下)你可以完全忽略第一个构造函数(保留第二个构造函数),如果有人试图实例化一个' A'的对象,编译器会抱怨。没有提供所需的参数列表(即" A myA;" " A myA = A();" )。

因此:出于哪种原因,明确删除' A()'构造函数,当你有一个带参数的构造函数(或几个构造函数)?

修改

我已经看过this帖子了。但恕我直言,我的问题延伸了该帖中提出的问题。我很高兴理解为什么有必要在有其他构造函数带有(s)参数时显式删除构造函数它对我没有意义,但我想检查是否有任何技术原因。 this帖子中解释的内容已经被我清除了。该帖子解释了明确删除构造函数的效果,提供有效用例的任何进一步示例或说明何时以及为何需要这样做的原因(一个答案解释了删除构造函数和另一个答案明确指出,它是@gybacsi对非常具体的源代码的假设。)

0 个答案:

没有答案