假设我有一个像
class Empty{
Empty(int a){ cout << a; }
}
然后我使用它调用它
int main(){
Empty(2);
return 0;
}
这会导致在堆栈上分配任何内存以创建“空”对象吗?显然,参数需要被压入堆栈,但我不想产生任何额外的开销。基本上我将构造函数用作静态成员。
我想这样做的原因是因为模板。实际代码看起来像
template <int which>
class FuncName{
template <class T>
FuncName(const T &value){
if(which == 1){
// specific behavior
}else if(which == 2){
// other specific behavior
}
}
};
这让我可以写类似的东西
int main(){
int a = 1;
FuncName<1>(a);
}
这样我就可以专门化一个模板参数,而不必指定T
. 另外,我希望编译器能够优化构造函数内的其他分支。如果有人知道这是否属实或如何检查,将不胜感激。我还假设将模板放入这种情况并不会改变上面的“空类”问题,对吗?