赞
踩
传送门 ==>> AutoSAR实战系列300讲「糖果Autosar」总目录
预测以下 C++ 程序的输出。
#include <iostream> using namespace std; template<int n> struct funStruct { enum { val = 2*funStruct<n-1>::val }; }; template<> struct funStruct<0> { enum { val = 1 }; }; int main() { cout << funStruct<8>::val << endl; return 0; }
输出:
256
程序计算“2 的 8 次幂(或 2^8)”。事实上,结构体funStruct可用于计算任何已知 n(或常数 n)的 2^n。上述程序的特殊之处在于:计算是在编译时完成的。因此,计算 2^8 是编译器完成的。要了解编译器是如何做到这一点的,让我们考虑以下关于模板和枚举的事实:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。