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

重載

D編程允許為一個函數(shù)名或在相同的范圍內(nèi)操作,這就是所謂的函數(shù)重載和運算符重載分別指定一個以上的定義。

重載聲明的是,已被聲明具有相同的名稱,在同一范圍內(nèi)先前聲明的聲明的聲明,除了這兩個聲明具有不同的參數(shù)和明顯不同的定義(實現(xiàn))。

當(dāng)調(diào)用一個重載函數(shù)或運算符,編譯器確定最合適的定義,通過比較你用來調(diào)用函數(shù)或運算符的定義中指定的參數(shù)類型的參數(shù)類型來使用。選擇最合適的重載函數(shù)或運算符的過程被稱為重載解析。

函數(shù)重載

可以有相同的函數(shù)名多個定義在相同的范圍。該函數(shù)的定義必須由類型和/或參數(shù)在參數(shù)列表中的號碼彼此不同。不能重載函數(shù)聲明只相差返回類型。

以下是其中相同功能的print()被用于打印不同的數(shù)據(jù)類型的示例:

import std.stdio;
import std.string;
class printData
{
   public:
      void print(int i) {
         writeln("Printing int: ",i);
      }

      void print(double  f) {
        writeln("Printing float: ",f );
      }

      void print(string s) {
        writeln("Printing string: ",s);
      }
};

void main()
{
   printData pd = new printData();

   // Call print to print integer
   pd.print(5);
   // Call print to print float
   pd.print(500.263);
   // Call print to print character
   pd.print("Hello D");
}

讓我們編譯和運行上面的程序,這將產(chǎn)生以下結(jié)果:

Printing int: 5
Printing float: 500.263
Printing string: Hello D

運算符重載

可以重新定義或超載最多可用在D內(nèi)置運算符因此程序員可以使用運算符與用戶定義的類型也是如此。

運算符可以使用字符串運算其次是ADD,SUB超載等基于正被重載的運算符。我們可以重載運算符+,如下圖所示添加兩個箱子。

Box opAdd(Box b)
{
   Box box = new Box();
   box.length = this.length + b.length;
   box.breadth = this.breadth + b.breadth;
   box.height = this.height + b.height;
   return box;
}

以下是該示例使用一個成員函數(shù)來顯示運算符的重載的概念。在這里,一個對象作為參數(shù)傳遞,其屬性將使用此對象來訪問,這將調(diào)用this操作符的對象可以使用此運算符來訪問,解釋如下:

import std.stdio;

class Box
{
   public:

      double getVolume()
      {
         return length * breadth * height;
      }
      void setLength( double len )
      {
         length = len;
      }

      void setBreadth( double bre )
      {
         breadth = bre;
      }

      void setHeight( double hei )
      {
         height = hei;
      }

      Box opAdd(Box b)
      {
         Box box = new Box();
         box.length = this.length + b.length;
         box.breadth = this.breadth + b.breadth;
         box.height = this.height + b.height;
         return box;
      }
   private:
      double length;      // Length of a box
      double breadth;     // Breadth of a box
      double height;      // Height of a box
};
// Main function for the program
void main( )
{
   Box box1 = new Box();    // Declare box1 of type Box
   Box box2 = new Box();    // Declare box2 of type Box
   Box box3 = new Box();    // Declare box3 of type Box
   double volume = 0.0;上一篇:類指針下一篇:D語言封裝