关于引用&的问题
来源:互联网 发布:知乎健身教练要求 编辑:程序博客网 时间:2024/05/29 17:06
#include <iostream>using namespace std;template <class T>class A { public: A() {}; T g(T &a, T &b);};template <class T>T A<T>::g(T &a, T &b){ return a + b;}int main(){ A<int> test; cout << test.g(1, 2); return 0;}
这时候会报错说,
templat.cpp: In function ‘int main()’:
templat.cpp:21:21: error: no matching function for call to ‘A<int>::g(int, int)’
templat.cpp:21:21: note: candidate is:
templat.cpp:13:3: note: T A<T>::g(T&, T&) [with T = int]
templat.cpp:13:3: note: no known conversion for argument 1 from ‘int’ to ‘int&’
但是如果在函数g的形参定义改为:
T g(const T &a,const T &b);
就可以直接传常数的了,我觉得是不是函数引用的问题,引用是一个对象的别名,其就是这个对象只是换了个名字,但如果只传个常数,该变量没有名字,而且引用必须初始化,所以引起了该问题,但为什么加const就可以传常数了?
其实要不然改变了引用值, 原来常量是变还是不变呢,这么一想就转过来了,感觉原因还是引用对一个对象来说不是一个副本了,而就是这个对象,如果直接改变的话,常数值是不能改变的,所以const限定下引用值不变就OK了。所以还是得有&的概念才好
0 0
- 关于引用&的问题
- 关于引用的赋值问题
- 关于指针的引用问题
- 关于引用mshtml的问题
- 关于反向引用的问题
- 关于引用的指向的 问题小解
- 经典的帖子 ,关于dll引用问题
- 关于.net2008引用excel控件的问题
- 关于Js变量地址引用的问题
- 关于List中引用的问题
- 关于前向引用的问题
- 关于Android引用Lib的问题
- 关于Windows系统环境变量的引用问题
- 关于java对象的引用问题
- 关于Template引用参数的问题
- 关于 NSString 的引用计数问题
- 关于Block循环引用的问题
- 关于block的强弱引用问题
- 黑马程序员——java基础----GUI
- Java对于Cookie的操作详解
- neutron surround you(1)
- 面经
- 2015编程之美资格赛:基站选址 暴力
- 关于引用&的问题
- nyoj613 免费馅饼 动态规划
- Paint之文字相关
- Linux程序设计(Linux shell编程的例子:批量处理文件)
- QUIC:Google开发的更好的TCP
- 测试用例--编写方案
- 第一章 算法在计算中的作用
- NSNotification
- rhel6网络配置