Day16-Template

再来说样板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

>>:  [DAY-14] 改组一只爵士乐队吧!

[Day14]资料表合并实做

在Day5的时候,主要介绍了SELECT语句,在当中也有提及多种资料表合并的语法,这篇文会列出一些简...

Day.8 备份还原 - 备份资料 (MYSQL binlog )-上

复习: 在昨天讲解了如何使用mysqldump备份是数据和binlog相关过滤方法,今天来实际模拟...

@Day3 | C# WixToolset + WPF 帅到不行的安装包 [使用发布专案的打包方式]

现今 系统架构多数为前後端分离,也有排程与网站分离…等 系统可能有各种分离,这时候我们打包工具必须做...

Day 2:挑选 Hexo 作为工程师技术部落格

来到铁人赛第二天,今天我们来聊聊 Hexo 这个架设工具。 Hexo 是什麽? Hexo 是利用 N...

[DAY 3] _ 开发板规划补充(stm32f030)

先聊个题外话因为是第一次参加这种比赛,我从来没有这样发文过,我第一天担心很多,这30天会不会很难发文...