2012年(158)
分类: C/C++
2012-11-20 11:14:26
#include
using namespace std;
struct foo
{
foo()
{
cout << "call
constructor" << endl;
}
foo( int i )
{
}
};
struct bar
{
bar( foo a, foo b )
{
}
};
int main( void )
{
int i = 0;
bar obj( foo(i), foo()
); // ---①
foo(); // ---②
}
①中,obj 不是
bar 的一个实例,而是一个函数申明,等同于 bar obj( foo i, foo (*)(void) )
也就是 foo(i) 等同于 foo i;
foo() 等同于 foo (*)(void)
②中,foo()不等于foo
(*)(void),而是定义了一个foo的匿名对象。因为没有函数名的函数声明是没有任何存在意义的。