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