为了账号安全,请及时绑定邮箱和手机立即绑定

void change(T a,T b){}为何不行

#include <iostream>
using namespace std;

/**
 * 定义模板函数swapNum
 * 实现功能:交换两个数的位置
 */
template<typename T>
void change(T a,T b)
{
    T temp = a;
    a = b;
    b = temp;
}

int main(void)
{
    int x = 10;
    int y = 20;
    // 调用模板函数
    change<int>(x,y);
        cout << "x = " << x << endl;
        cout << "y = " << y << endl;
	return 0;
}

交换失败为何?

正在回答

1 回答

这样声明a和b的话,在调用函数传参数时是把xy的值复制给ab,在change函数中ab的值确实是交换了,但与外面main中的x y没有什么关系啊。

应把a和b声明为引用难道前面的课程中没有讲这个吗!?

1 回复 有任何疑惑可以回复我~
#1

星小辰 提问者

想起来了,多谢!请问你是慕课请来的救兵吗?( *・ω・)
2015-09-18 回复 有任何疑惑可以回复我~
#2

慕圣2268672

感觉好像有啥疑难杂症的地方你都能解开,有点6啊!
2017-09-19 回复 有任何疑惑可以回复我~
#3

onemoo 回复 慕圣2268672

哈哈,你又翻到了一个老帖
2017-09-19 回复 有任何疑惑可以回复我~
#4

慕圣2268672 回复 onemoo

哈哈!最近偷懒了,这么长时间才看到这里!
2017-09-20 回复 有任何疑惑可以回复我~
#5

onemoo 回复 慕圣2268672

啊,看了你的回复我才知道,原来课程的相关问答区还存在啊! 在之前这和现在的猿问是在一起的。
2017-09-21 回复 有任何疑惑可以回复我~
#6

慕圣2268672 回复 onemoo

看来以后再有难题不用发猿问了,直接发你私信得了!哈哈
2017-09-21 回复 有任何疑惑可以回复我~
查看3条回复

举报

0/150
提交
取消
C++远征之模板篇
  • 参与学习       91156    人
  • 解答问题       318    个

本C++教程力求即学即会,所有知识以实践方式讲解到操作层面

进入课程

void change(T a,T b){}为何不行

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信