gpt4 book ai didi

c++ - 模板getID调用常规getID

转载 作者:行者123 更新时间:2023-12-01 14:44:18 26 4
gpt4 key购买 nike

我在某个地方看到过该代码,但我不知道它是如何工作的。请解释:(
我的猜测是模板函数正在保存其他函数的状态。

码:

#include <iostream>

int getID() {
static int id = 0;
return id++;
}

template <typename T>
int getID2() {
static int id2 = getID();
return id2;
}

int main() {
std::cout << getID2<int>() << std::endl;
std::cout << getID2<int>() << std::endl;
std::cout << getID2<double>() << std::endl;
std::cout << getID2<double>() << std::endl;
std::cout << getID2<int>() << std::endl;

return 0;
}

输出:
0
0
1
1
0

最佳答案

每个具有自己类型的模板调用都是其自己的功能。本质上,您的代码包含

int getID2_int() ..


int getID2_double() ..

作为两个独立的功能。在每个单独的功能中,您都有
static int id2

它仅被初始化一次,因此getID被调用两次-一次是从int版本,一次是从double版本。

关于c++ - 模板getID调用常规getID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58604006/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com