complex庫中的模板complex提供了一個複數型別,它與其他數值型別相容。在早期的C++庫中,complex並不是一個模板,它只是基於下列資料描述的一種型別:
class complex{
// ……methods
private:
double x, y;
};
現在complex則由以下模板描述:
template
SCALAR x, y;
這使使用者能夠根據需要決定基本型別的精度。一般來說,這些基本型別是float、double或者long double。下面是用於測試這個型別的簡單程式碼。
檔案 complex.cpp
#include
using namespace std;
int main()
{
complex
cout
y = x + 1.0;
// if (x
// cout
}
complex型別對科學家和工程師來說很重要,它說明了將C++擴充套件到新的領域是多麼容易的事情。例如,許多科學家使用FORTRAN90程式設計,原因就是FORTRAN90中有複數型別。因此,C++實際上已經能夠取代需要複數型別的FORTRAN程式。
注意註釋掉的行是如何使用小於運算子的。在標準庫中沒有為complex型別定義該運算子,所以在對該模板例項化時編譯將失敗。如果讀者自己定義了這個運算子,可以過載該運算子,執行上述程式碼。
complex庫中的模板complex提供了一個複數型別,它與其他數值型別相容。在早期的C++庫中,complex並不是一個模板,它只是基於下列資料描述的一種型別:
class complex{
// ……methods
private:
double x, y;
};
現在complex則由以下模板描述:
template
class complex{
// ……methods
private:
SCALAR x, y;
};
這使使用者能夠根據需要決定基本型別的精度。一般來說,這些基本型別是float、double或者long double。下面是用於測試這個型別的簡單程式碼。
檔案 complex.cpp
#include
#include
using namespace std;
int main()
{
complex
cout
y = x + 1.0;
cout
// if (x
// cout
}
complex型別對科學家和工程師來說很重要,它說明了將C++擴充套件到新的領域是多麼容易的事情。例如,許多科學家使用FORTRAN90程式設計,原因就是FORTRAN90中有複數型別。因此,C++實際上已經能夠取代需要複數型別的FORTRAN程式。
注意註釋掉的行是如何使用小於運算子的。在標準庫中沒有為complex型別定義該運算子,所以在對該模板例項化時編譯將失敗。如果讀者自己定義了這個運算子,可以過載該運算子,執行上述程式碼。