【发布时间】:2010-10-22 11:18:05
【问题描述】:
是否可以在 C++ 中声明一个变量而不实例化它?我想做这样的事情:
Animal a;
if( happyDay() )
a( "puppies" ); //constructor call
else
a( "toads" );
基本上,我只想在条件之外声明 a ,以便获得正确的范围。
有什么方法可以在不使用指针和在堆上分配a 的情况下做到这一点?也许引用的一些聪明的东西?
【问题讨论】:
-
见 RAII(资源获取是初始化)
-
如果它是一个非静态的全局/命名空间范围,那么值得注意的是你可以在不初始化的情况下实际声明:extern Animal a; ... 动物 a(stuff);
-
@newacct:链接会有所帮助stackoverflow.com/questions/2321511/…
标签: c++ scope declaration instantiation