gpt4 book ai didi

c++ - 类 : where to specify it? 函数的默认模板参数

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:19:07 26 4
gpt4 key购买 nike

对于 C++ 中的每种情况,我必须在哪里指定类成员函数的默认模板参数(假设声明(当然)在“类主体”中,并且函数定义在类主体之外) 2011 年:

  • “正常”功能
  • 静态函数
  • 友元函数

在定义中,在声明中还是在两者中?

最佳答案

嗯,根据我创建模板类和方法的经验,您可以这样指定模板函数:

template<typename T>
T MyFunc(T &aArg1, T &aArg2)
{
//...Definition Goes Here
}

typename T是模板函数的模板参数类型,您需要将该数据类型一致地传递给标记为“T”的每个参数。这意味着 aArg2 必须是 aArg1 的任何数据类型。现在,当你调用这个函数时,你可以这样调用它: MyFunc</*datatype*/int>(iArg1, iArg2);这两个参数必须是数据类型“int”,否则您将收到警告或错误。

现在,这也适用于类方法(我认为这就是你所说的“类成员函数”的意思),它们是由类提供的函数(即 MyClass::MyFunc() )所以当你声明一个类方法时模板方法,你用同样的方式来做。这是一个示例类:

class MyClass
{
MyClass();
~MyClass();

template<typename T>
static T MyStaticFunc(T aArg) { return aArg; }


template<typename T>
T MyFunc(T aArg) { return aArg; }
}

如您所见,并不难。现在,静态函数与您必须确保在内置类的同一模块中定义 then 的方式相同,否则,您将收到错误。

不幸的是,我从来没有真正使用过“ friend ”方法,所以我不知道如何解决这个问题。我怀疑您会以与其他两个相同的方式进行操作。我希望整篇文章的回答有所帮助。

关于c++ - 类 : where to specify it? 函数的默认模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11910755/

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