【发布时间】:2021-10-30 06:03:42
【问题描述】:
#include <iostream>
template <int N>
{
class P
{
public:
static void print()
{
P<N-1>::print();
std::cout << N << std::endl;
}
};
template<>
class P<1> {
public:
static void print()
{
std::cout << 1 << std::endl;
}
};
int main() {
const int N = 10;
P<N>::print();
return 0;
}
下面代码的输出是:
1
2
3
4
5
6
7
8
9
10
程序先从 10 倒数到 1,然后一旦 N 值变成 1 P::print 被调用。我不明白在这个电话之后,N 值如何增加 从 1 到 N=10。有人可以解释这种行为吗?
【问题讨论】:
-
你能确定
P<10>::print()会做的第一件事吗? -
如果您将此问题简化为调用
P<2>::print(),您可能会发现很容易单步执行导致1 2的每一行代码。
标签: c++ templates recursion output