我是新來的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是一個整數! –