Fatorial Meta Programming

问题描述 投票:0回答:1

我们最近在我们的大学上了一堂关于元编程的课程...因此,我开始实现自己的阶乘元代码...这就是结果。

template<int i>
struct fak{
    fak<i-1> next;
    int fakul = i * next.fakul;
};


template<>
struct fak<1>{
    int fakul = 1;
};

与此同时,我们脚本的变体...

template<int i>
struct fakCool{

    static const int fak = i * fakCool<i-1>::fak;
};

template<>
struct fakCool<1>{

    static const int fak = 1;
};

看到脚本的结果后,我的问题是...都是尝试元编程吗?如果是这样,它们之间的区别在哪里?实现阶乘元的常用方法是什么?

c++ algorithm template-meta-programming
1个回答
3
投票

第二代码:-

  • 不需要实例化对象。

  • 它在编译时进行计算。(由于类中的静态成员)]]

  • 第一个代码,需要实例化一个对象,并在运行时进行计算。

因为元编程是关于使用代码生成代码,所以在编译完成后再生成代码是没有用的,因为即使生成了代码,该代码也无法编译。因此,所有元编程仅在编译时进行。而且第一个程序不是元编程。

© www.soinside.com 2019 - 2024. All rights reserved.