加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 类函数的默认模板参数:在何处指定它?

发布时间:2020-12-16 07:00:59 所属栏目:百科 来源:网络整理
导读:对于C 2011中的每个案例,我必须在哪里指定类成员函数的默认模板参数(假设声明是(当然)在“类体”中,函数定义在类体外): “正常”功能 静态功能 朋友的功能 在定义中,在声明中还是两者兼而有之? 解决方法 好, 根据我创建模板类和方法的经验,您可以指定模板
对于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; }
}

正如你所看到的,并不困难.现在,静态函数与您必须确定在内置类的同一模块中确定的方式相同,否则,您将收到错误.

不幸的是,我从来没有真正使用“朋友”的方法,所以我不知道如何解决这个问题.我怀疑你会以与其他两个相同的方式做到这一点.我希望答案的整篇文章都有所帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读