再来说样板template,样板只有参数型态不一样其余都相同(包括程序逻辑),样板基本上与写一般的函式没甚麽差别,但变数型态并不指定而是通常由一个名为正规型别引数(Formal type parameter)的T取代如下蚂蚁书范例:
T maximum( T value1, T value2, T value3 ){
T maximumValue = value1; // assume value1 is maximum
// determine whether value2 is greater than maximumValue
if ( value2 > maximumValue )
maximumValue = value2;
// determine whether value3 is greater than maximumValue
if ( value3 > maximumValue )
maximumValue = value3;
return maximumValue;
} // end function template maximum
程序逻辑非常简单传进来三个value,首先将maximumValue设为value1再让value2与maximumValue比大小如果value2大於maximumValue则将maximumValue设为value2,接着对value3重覆相同逻辑,跟一般函式的差别只有型态用T代替,当然这样去run编译器会直接报错因为从头到尾没讲T是啥? 所以开头要补这一段template < class T >或是 template< typename T >完整程序码如下在main()函数中要比哪种型态都可以,不知诸位是不是充分体验到C++的乐趣呢?那麽简单的语言被CS101换掉当然是有原因的,C++还有更风骚的操作overloading + template + static,砸再一起做撒尿牛丸一整个花枝招斩,那麽好的语言绝对不能只有我学过!喔对了还有一个泛型(generic)没说。
// Fig. 6.26: maximum.h
// Definition of function template maximum.
template < class T > // or template< typename T >
T maximum( T value1, T value2, T value3 ){
T maximumValue = value1; // assume value1 is maximum
// determine whether value2 is greater than maximumValue
if ( value2 > maximumValue )
maximumValue = value2;
// determine whether value3 is greater than maximumValue
if ( value3 > maximumValue )
maximumValue = value3;
return maximumValue;
} // end function template maximum
// Fig. 6.27: fig06_27.cpp
// Function template maximum test program.
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
#include "maximum.h" // include definition of function template maximum
int main()
{
// demonstrate maximum with int values
int int1, int2, int3;
cout << "Input three integer values: ";
cin >> int1 >> int2 >> int3;
// invoke int version of maximum
cout << "The maximum integer value is: "
<< maximum( int1, int2, int3 );
// demonstrate maximum with double values
double double1, double2, double3;
cout << "\n\nInput three double values: ";
cin >> double1 >> double2 >> double3;
// invoke double version of maximum
cout << "The maximum double value is: "
<< maximum( double1, double2, double3 );
// demonstrate maximum with char values
char char1, char2, char3;
cout << "\n\nInput three characters: ";
cin >> char1 >> char2 >> char3;
// invoke char version of maximum
cout << "The maximum character value is: "
<< maximum( char1, char2, char3 ) << endl;
return 0; // indicates successful termination
} // end main
<<: 30天学会 Python: Day 12-人生苦短,使用 Python
在Day5的时候,主要介绍了SELECT语句,在当中也有提及多种资料表合并的语法,这篇文会列出一些简...
复习: 在昨天讲解了如何使用mysqldump备份是数据和binlog相关过滤方法,今天来实际模拟...
现今 系统架构多数为前後端分离,也有排程与网站分离…等 系统可能有各种分离,这时候我们打包工具必须做...
来到铁人赛第二天,今天我们来聊聊 Hexo 这个架设工具。 Hexo 是什麽? Hexo 是利用 N...
先聊个题外话因为是第一次参加这种比赛,我从来没有这样发文过,我第一天担心很多,这30天会不会很难发文...