可不可以调用构造函数
一直以为在程序级别不可以直接调用构造函数(好像在书上看到过),但是今天随意的实验了一下,意料之外的现象:
class foo{
public:
foo(){ cout << "foo" << endl; }
foo(int a){ cout << a << endl; }
};
foo f;
结果在vs2003和vs2005都可以像下面这样显式调用两个constutctor:
f.foo::foo();
f.foo::foo(2);
但是不可以(还是在vs2003和vs2005)
f.foo();
f.foo(2);
然后在g++中试验,却发现:
f.foo::foo();
f.foo::foo(2);
f.foo();
f.foo(2);
这4中形式都不可以,编译出错。
请问高人,在c++标准中是否允许在程序级别直接调用constructor?