在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ C++/ D語(yǔ)言模板
類的訪問修飾符
D語(yǔ)言運(yùn)算符
D語(yǔ)言邏輯運(yùn)算符
類指針
D語(yǔ)言元組
D語(yǔ)言指針
D語(yǔ)言模塊
D語(yǔ)言sizeof運(yùn)算符
D語(yǔ)言混合類型
D語(yǔ)言封裝
D語(yǔ)言條件編譯
類的靜態(tài)成員
D語(yǔ)言do...while循環(huán)
D語(yǔ)言結(jié)構(gòu)體
重載
D語(yǔ)言字符串-String
D語(yǔ)言決策語(yǔ)句
D語(yǔ)言接口
D語(yǔ)言for循環(huán)
D語(yǔ)言switch語(yǔ)句
D語(yǔ)言關(guān)聯(lián)數(shù)組
D語(yǔ)言范圍
D語(yǔ)言枚舉Enums
契約式編程
D語(yǔ)言并發(fā)
D語(yǔ)言開發(fā)環(huán)境設(shè)置
D語(yǔ)言別名
D語(yǔ)言常值
D語(yǔ)言常量
D語(yǔ)言函數(shù)
D語(yǔ)言if嵌套語(yǔ)句
D語(yǔ)言循環(huán)
D語(yǔ)言概述,D語(yǔ)言是什么?
D語(yǔ)言運(yùn)算符優(yōu)先級(jí)
D語(yǔ)言continue語(yǔ)句
D語(yǔ)言異常處理
D語(yǔ)言break語(yǔ)句
D語(yǔ)言if...else語(yǔ)句
D語(yǔ)言類和對(duì)象
類繼承
D語(yǔ)言字符
D語(yǔ)言教程
D語(yǔ)言關(guān)系運(yùn)算符
比較操作符重載
構(gòu)造函數(shù)和析構(gòu)函數(shù)
D語(yǔ)言抽象類
D語(yǔ)言if語(yǔ)句
D語(yǔ)言賦值運(yùn)算符
D中算術(shù)運(yùn)算符
D語(yǔ)言類成員函數(shù)
D語(yǔ)言位運(yùn)算符
D語(yǔ)言變量
D語(yǔ)言數(shù)據(jù)類型
D語(yǔ)言文件I/O
D語(yǔ)言數(shù)組
一元運(yùn)算符重載
D語(yǔ)言嵌套switch語(yǔ)句
D語(yǔ)言基本語(yǔ)法
二元運(yùn)算符重載
this指針
D語(yǔ)言聯(lián)合體
D語(yǔ)言模板
D語(yǔ)言嵌套循環(huán)
D語(yǔ)言while循環(huán)

D語(yǔ)言模板

模板是泛型編程,涉及編寫代碼的方式,獨(dú)立于任何特定類型的基礎(chǔ)。

模板是藍(lán)圖或公式創(chuàng)建一個(gè)泛型類或函數(shù)。

模板的功能,允許描述的代碼作為一種模式,讓編譯器自動(dòng)生成的程序代碼。的源代碼部分可留至要填充,直到該部分是在程序?qū)嶋H使用的編譯器。編譯器填補(bǔ)了缺失的部分。

函數(shù)模板:

定義一個(gè)函數(shù)作為模板離開一個(gè)或多個(gè)使用作為非特定的類型,可以由編譯器后面推導(dǎo)出來(lái)。正在未指定的類型模板形參表上,它的函數(shù)的名稱,函數(shù)參數(shù)列表之間進(jìn)行定義。出于這個(gè)原因,函數(shù)模板有兩個(gè)參數(shù)列表:模板形參表和函數(shù)參數(shù)列表:

import std.stdio;

void print(T)(T value)
{
   writefln("%s", value);
}

void main()
{
   print(42);

   print(1.2);

   print("test");
}

如果我們編譯并運(yùn)行上面的代碼,這會(huì)產(chǎn)生以下結(jié)果:

42
1.2
test

函數(shù)模板與多個(gè)類型參數(shù)

可以有多個(gè)參數(shù)類型和它示出被顯示在下面的例子。

import std.stdio;

void print(T1, T2)(T1 value1, T2 value2)
{
   writefln(" %s %s", value1, value2);
}

void main()
{
   print(42, "Test");

   print(1.2, 33);
}

如果我們編譯并運(yùn)行上面的代碼,這會(huì)產(chǎn)生以下結(jié)果:

 42 Test
 1.2 33

類模板

正如我們可以定義函數(shù)模板,我們也可以定義類模板。下面是例子定義類Stack和實(shí)現(xiàn)泛型方法,推動(dòng)并從彈出堆棧中的元素。

import std.stdio;
import std.string;

class Stack(T)
{
   private:
      T[] elements;

   public:

      void push(T element)
      {
         elements ~= element;
      }

      void pop()
      {
         --elements.length;
      }
 
      T top() const @property
      {
         return elements[$ - 1];
      }

      size_t length() const @property
      {
         return elements.length;
      }
}

void main()
{
   auto stack = new Stack!string;

   stack.push("Test1");
   stack.push("Test2");

   writeln(stack.top);
   writeln(stack.length);

   stack.pop;
   writeln(stack.top);
   writeln(stack.length);
}

如果我們編譯并運(yùn)行上面的代碼,這會(huì)產(chǎn)生以下結(jié)果:

Test2
2
Test1
1