对象创建异常

Object creation Anomaly

本文关键字:异常 创建 对象      更新时间:2023-10-16

我在Windows 7上使用Code::Blocks 10.05GCC。我正在试验C++ constructors,我编译并执行了以下程序。

#include<iostream>
using namespace std;
class base {
    public:
    base() {
        cout<<"n Constructor Invokedn";
    }
};
int main() {
  base ob;
  return 0;
}

产出如预期,如下所示。

Constructor Invoked

但在输入程序时,我不小心编译了以下程序。令我惊讶的是,它编译时没有任何错误或警告。

#include<iostream>
using namespace std;
class base {
    public:
    base() {
        cout<<"n Constructor Invokedn";
    }
};
int main() {
  base ob();
  return 0;
}

但该程序没有给出任何输出,只是一个空白屏幕。但没有错误或警告。由于它没有调用构造函数,我认为没有创建任何对象。但为什么没有错误或警告?我是不是错过了一些显而易见的东西?

当我添加行cout<<sizeof(ob);时,我得到了以下错误消息。

error: ISO C++ forbids applying 'sizeof' to an expression of function type

那么什么是ob?它被认为是一个函数还是一个对象?

请有人解释一下base ob();的代码行,以及当执行这行代码时,内存中实际发生了什么?

谢谢。

您已经用声明了一个函数

base ob();

它不会有任何作用。请参阅此处