极客班

1.模板观念与函数模板

2015-10-11  本文已影响119人  偷天神猫

项目地址

课程内容

Part1 C++模板简介


C++模板概观(1)


int Max(int a, int b)
{
    return (a>b)?a:b;
}

long Max(long a, long b)
{
    return (a>b)?a:b;
}

char Max(char a, char b)
{
    return (a>b)?a:b;
}

C++模板概观(2)


template <typename T> T Max(T a, T b)
{
    return (a>b)?a:b;
}

C++模板概观(3)


C++函数模板(1)


template <typename T>
inline T Max(
    const T& a,
    const T& b)
{
    return (a > b) ? a:b;
}

C++函数模板(2)

C++函数模板(3)


int i = 7, j = 30;
_tprintf(TEXT("Max(i,j) = %d\n"), Max(i,j));

double f = -1.8, g = -0.9;
_tprintf(TEXT("Max(f,g) = %f\n"), Max(f,g));

std::wstring s1 = TEXT("mathematics"), s2 = TEXT("math");
_tprintf(TEXT("Max(s1,s2) = %s\n"), Max(s1,s2).c_str());

Max(i,f);//compile error: template parameter 'T' is ambiguous  

C++函数模板(4)

C++函数模板(5)

  1. 没有实例化之前,检查模板代码本身是否有语法错误
  2. 实例化期间,检查对模板代码的调用是否合法

C++函数模板(6)

C++函数模板(7)


//普通函数
//1
inline int const& Max(const int const& a, const int const& b)

//2
template <typename T>
inline T const& Max(const T const& a, const T const& b)

//3
template <typename T>
inline T const& Max(const T const& a, const T const& b, const T const& c)

C++函数模板(8)

函数模板重载(续)

C++函数模板(9)

上一篇 下一篇

猜你喜欢

热点阅读