【发布时间】:2018-05-15 23:57:46
【问题描述】:
我正在尝试在 C++ 中创建一个禁止使用默认构造函数的类。
尽管如此,我认为我失败了,或者我不了解幕后发生的事情。这是我目前所拥有的:
class Point {
public:
float x;
float y;
Point(float newX, float newY); //Definition is irrelevant
Point() = delete; //Default or "empty" constructor is forbidden, so deleted
}
/* ... */
int main(void)
{
Point a(1, 2); //Ok, should be available
Point b; //Ok, does not compile
Point c(); //Not ok, it does compile :(
}
我的预期行为是不编译点 c。我会很感激帮助产生这种行为,或者如果不可能,解释为什么会这样。
提前谢谢你
【问题讨论】:
-
我在之前的帖子中得到了答案:stackoverflow.com/questions/40683637/…。请注意,问题中发布的代码已更新以显示如何执行此操作。
-
c不是对象。所以默认的 c'tor 不会被调用,别担心。