对象创建异常

时间:2013-07-05 09:30:53

标签: c++

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

#include<iostream>

using namespace std;

class base {
    public:
    base() {
        cout<<"\n Constructor Invoked\n";
    }
};

int main() {
  base ob;
  return 0;
}

输出符合预期,如下所示。

Constructor Invoked

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

#include<iostream>

using namespace std;

class base {
    public:
    base() {
        cout<<"\n Constructor Invoked\n";
    }
};

int main() {
  base ob();
  return 0;
}

但程序没有给出任何输出,只是一个空白屏幕。但没有错误或警告。由于它没有调用构造函数,因此我假设没有创建对象。但为什么没有错误或警告?我错过了很明显的东西吗?

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

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

那么ob是什么?它被视为一个功能还是一个对象?

请有人解释代码行base ob();以及执行该行代码时内存中实际发生的情况?

谢谢。

1 个答案:

答案 0 :(得分:3)

您已使用

声明了一个函数
base ob();

它什么都不做。 见here