首页 > 其他分享 >模板函数的函数参数为函数或函数对象的传参

模板函数的函数参数为函数或函数对象的传参

时间:2023-09-17 19:45:17浏览次数:33  
标签:传参 const 函数 对象 函数参数 模板 string

  模板函数有模板参数和函数参数,重载调用操作符的类 及 函数指针作为模板参数,其函数参数及函数参数的传参,测试代码如下:

#include <iostream>
using namespace  std;

//key
string s1("Hello");
string s2("World");

//重载了调用操作符的类其对象称为函数对象
class cmp{
public:
    bool operator()(const string& s1, const string& s2)const{
        cout << "bool operator()(const string& s1, const string& s2)const\n";
        return s1 < s2;
    }//类对象为const//成员函数为const//成员函数为const是防止修改类对象
};    

bool compare(const string& s1, const string& s2){
    cout << "bool compare(const string& s1, const string& s2)\n";
    return true;
}

template<typename Compare>     //模板类型
void test( const Compare&c = Compare() ){ //函数参数为const对象引用//默认值为函数对象//
                            //默认值为临时对象,右值,const对象的引用
    cout << "void test( const Compare&c = Compare() )\n";
    c( s1,s2 );
}

int main () 
{
    test<bool(*)(const string&, const string&) >(compare ); //传参
    cout << "--------------------------------------\n"; 
    test<cmp>( );   //默认

    return 0;
}

  模板函数的函数参数,默认为临时对象,应为const对象引用,因为 临时对象为右值

标签:传参,const,函数,对象,函数参数,模板,string
From: https://www.cnblogs.com/GoldenEllipsis/p/17709587.html

相关文章

  • 7-MySQL函数
    1.分组groupby在MySQL中,GROUPBY的意思是“分组查询”,它可以根据一个或多个字段对查询结果进行分组。GROUPBY的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。这可以理解为将数据按照某个字段或者多个字段进行分组。使用GROUPBY......
  • 无涯教程-JavaScript - EXP函数
    描述EXP函数返回e升至数字的幂。常数e等于自然对数的底数2.71828182845904。语法EXP(number)争论Argument描述Required/OptionalNumberTheexponentappliedtothebasee.RequiredNotes要计算其他碱基的幂,请使用幂运算符(^)EXP是LN的倒数,LN是数字的自然......
  • 无涯教程-JavaScript - EVEN函数
    描述EVEN函数返回四舍五入到最接近的偶数整数的数字。您可以使用此功能来处理两个项目。语法EVEN(number)争论Argument描述Required/OptionalNumberThevaluetoround.RequiredNotes如果数字为非数字,则EVEN返回#VALUE!错误值。不管数字的符号如何,当从零开......
  • java中使用JNA调用C/C++动态链接库中的函数
    目录C++部分创建动态库项目JAVA部分pom依赖工程结构测试类jna提供C与JAVA数据类型映射参考C++部分创建动态库项目注意:动态库中的头文件,必须要将需要导出的函数包裹在extern"C"{}中,否者在使用侧java工程中,就无法加载并使用JAVA部分pom依赖<dependencies><dependenc......
  • 无涯教程-JavaScript - DEGREES函数
    描述DEGREES函数将弧度转换为度。语法DEGREES(angle)争论Argument描述Required/OptionalAngleTheangleinradiansthatyouwanttoconvert.RequiredNotes弧度和度之间的转换由以下关系式计算180度=π弧度其中π是数学常数,PI=3.14159265358979...适用性E......
  • 数据库中的基本函数
    数据库中的函数1字符串函数concat(s1,s2,...,sn)字符串拼接,将s1,s2,...,sn拼接成一个字符串lower(str)将字符串str全部转为小写upper(str)将字符串str全部转为大写lpad(str,n,pad)左填充,用字符串pad对str的左边进行填充,达到n个字符串长度rpad(str,n,pad)右填充,用字符串pad......
  • TypeScript封装验证函数(电话、邮箱、URL、数字、银行卡、税号)
    /** *验证手机号码或者电话号 **/exportfunctionisMobileTel(rule:any,value:any,callback:any){ if(!value){  //returncallback(newError('输入不可以为空'))  returncallback() } setTimeout(()=>{  constmyreg=/^((0\d{2,......
  • 无涯教程-JavaScript - DECIMAL函数
    描述DECIMAL函数将给定基数的文本表示形式转换为十进制数。语法DECIMAL(text,radix)争论Argument描述Required/OptionalText您要转换的数字的文本表示形式。Text的字符串长度必须小于或等于255个字符。RequiredRadix提供的数字的基数(基数)。基数必须是整数......
  • Linux教材第九章学习笔记——I/O库函数
    C语言文件操作内容复习 cd..  返回上级目标文件: ./  执行文件:对文件内容进行修改,在vim命令行输入wq保存后返回: gcc编译后输入./a.out可显示出c文件运行结果: 编译预处理: 编译: 汇编: 用字符方式逐个打印hello.c;打印十六进制文件: I/O库函数知识......
  • 70-函数也是对象-内存分析
         ......