我在Code::Blocks 10.05
上使用GCC
与Windows 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();
以及执行该行代码时内存中实际发生的情况?
谢谢。