程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> 解析C++/CLI之頭文件、內聯函數與數組

解析C++/CLI之頭文件、內聯函數與數組

編輯:vc教程

頭文件與函數聲明

在傳統的設計與實現中,你可對需建模的每種類型進行定義,並把定義放在各自的頭文件中;而頭文件中,一般會包含類型名、成員名、及相關小型成員函數的內聯定義。

與各個單獨編譯的源文件是通過頭文件來共享信息不同,在C++/CLI中,這些信息是通過程序集來共享的。就拿常舉例的Point類來說,它單獨編譯,並生成了一個名為"Point.dll"的程序集。任何需要某種類型定義的應用程序,都必須編譯和鏈接帶有此類型的程序集,這同時也要求此DLL形式的程序集中有完整的類型定義;同樣,在類型中所有聲明的函數也必須被定義,否則,鏈接器將會報告錯誤。

舉例來說,你可以在Point類中聲明成員函數GetHashCode,並在類外定義它,但必須在同一源文件中(見例1)。但是,若把此成員函數的定義放在一個單獨的源文件中卻不行,即便源文件是作為同一程序集的輸入、與Point.cpp同時編譯也不行,因為編譯這樣一個文件需要訪問程序集Point.dll,而這正好是此編譯過程要生成的程序集。(此處假定在函數定義時未使用inline,這將在後面討論。)

例1:

public ref class Point
{
...
virtual int GetHashCode() override;
};
int Point::GetHashCode() override
{
return X ^ (Y << 1);
}

在編譯及鏈接任何程序集時,都隱含不使用頭文件,且程序集所依賴的所有其他程序集都必須是已編譯及鏈接過的。

內聯函數

在Point中,每個成員函數的定義都有意寫成了inline(內聯),除了增加定義的靈活性外,還可把代碼保持在同一源文件中,使成員函數不能在類型定義本身之外的另一文件中被定義。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved