c++ 函数模板,变量的引用

本文探讨了在C++中使用函数模板和变量引用时遇到的编译错误问题。当结合引用和函数模板使用时,编译器报错'call of overloaded',而替换为指针则能正常工作。示例代码展示了如何使用模板和指针进行交换操作,为理解C++的模板和引用特性提供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

函数模板:“函数体相同,数据类型不同,模板!”

变量的引用:“你我同为一体,一荣俱荣,一损俱损”

#include <iostream>

using namespace std;

template <typename numtype>
void swap(numtype &a,numtype &b)
{
    numtype &temp=a;
    a=b;
    b=temp;
}

int main()
{
    int g=6,h=7;
    swap(g,h);
    cout<<g<<' '<<h<<endl;
    float c=6.1,d=7.1;
    swap(c,d);
    cout<<c<<' '<<d<<endl;
    return 0;

}


当我把变量的引用和函数模板结合起来用的时候,编译器是这么提示我语法错误的:

error: call of overloaded 'swap(int&, int&)' is ambiguous

error: call of overloaded 'swap(float&, float&)' is ambiguous


当我把指针和函数模板结合起来用的时候,顺利通过了编译,程序运行结果正确:


#include <iostream>
using namespace std;

template <typename numtype>
void swap(numtype *a,numtype *b)
{
    numtype *temp=a;
    a=b;
    b=temp;
}

int main()
{
    int g=6,h=7;
    swap(g,h);
    cout<<g<<' '<<h<<endl;
    float c=6.1,d=7.1;
    swap(c,d);
    cout<<c<<' '<<d<<endl;
    return 0;
}


记下了,当作踏入c++沼泽的第二脚。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值