gpt4 book ai didi

C++——在这种情况下,编译器可以推断出类型

转载 作者:行者123 更新时间:2023-11-30 01:29:35 24 4
gpt4 key购买 nike

vector<Widget*> vwp;

// populate vwp;

// Do need to specify the TYPE 'Widget'
for_each(vwp.begin(), vwp.end(), DeleteObject<Widget>()); // case I

template<typename T>
struct DeleteObject: public unary_function<const T*, void> {
void operator() (const T* ptr) const
{
delete ptr;
}
};

///////////////////////////////////////////////////////////

struct DeleteObjectB {
template<typename T>
void operator() (const T* ptr) const
{
delete ptr;
}
};

vector<Widget*> vwpB;

// populate vwpB;

// Do not need to specify the TYPE 'Widget'
for_each(vwpB.begin(), vwpB.end(), DeleteObjectB()); // case II

我的问题如下:

In case I, we need to specify the type.
In case II, we don't need to specify the type.
Is there a general rule that I can follow?

谢谢

最佳答案

第一个案例是一个类模板。第二种情况具有功能模板。这是的区别。

关于C++——在这种情况下,编译器可以推断出类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5682658/

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