我是新来的C++模板和从C++ Templates The Complete Guide学习。 第二章有函数从参数中找到最大值。请看下面的代码。使用模板查找最大值
#include <iostream>
#define PRINT(x) std::cout<<#x<<":"<<x<<std::endl;
template <typename T>
inline T const& max(T const& a,T const& b)
{
return a>b?a:b;
}
int main(){
int a=4;
PRINT(a);
PRINT(&a);
double b=3.1;
PRINT(b);
PRINT(&b);
double const & c = ::max<double>(a,b);
PRINT(c);
PRINT(&c);
return 0;
}
输出。
一:4 &一个:0x7ffe1522731c
B:3.1 & B:0x7ffe15227320
C:4 & C:0x7ffe15227328
我不明白,为什么地址&a
和&c
不一样吗?
我很确定这不会发生什么。有(最喜欢)没有分配,也没有分配。你也是混合类型'double const&'不是'double',所以它不能保存'max'的值。它可以保存对max返回的值的引用。转换发生在传递'a'作为参数时,而不是返回结果。 – luk32
哎呀,你是对的。我错过了a是一个整数! –