#include <iostream>
using namespace std;
class test{
public:
test() { cout<<"CTOR"<<endl; }
~test() { cout<<"DTOR"<<endl; }
};
int main()
{
test testObj();
cout<<"HERE"<<endl;
}
Output:
HERE
Compiler skips the line “test testObj(); ” and compiles the rest with warning and when run will generate the output. The warning is “prototyped function not called (was a variable definition intended?) in VC++ 2008. Why does it not throw an error?
Because it’s not an error.
Your code has fallen foul of the most-vexing parse (in summary,
test testObj();doesn’t define a variable, it declares a function).