在 C++ 中,std::complex
是一個模板類,用于表示和操作復數。要擴展它以支持更多功能,你可以創建一個新的類,繼承自 std::complex
,并添加你需要的額外功能。
以下是一個例子,展示了如何創建一個名為 MyComplex
的新類,它繼承自 std::complex<double>
并添加了一些額外功能:
#include <iostream>
#include <complex>
#include <cmath>
class MyComplex : public std::complex<double> {
public:
// 繼承構造函數
using std::complex<double>::complex;
// 添加一個新的構造函數,接受兩個參數:實部和虛部
MyComplex(double real, double imag) : std::complex<double>(real, imag) {}
// 添加一個新的成員函數,計算復數的模長(即絕對值)
double magnitude() const {
return std::abs(*this);
}
// 添加一個新的成員函數,計算復數的輻角(即相位角)
double phase() const {
return std::arg(*this);
}
};
int main() {
MyComplex c1(3.0, 4.0);
std::cout << "Magnitude: " << c1.magnitude() << std::endl;
std::cout << "Phase: " << c1.phase() << " radians" << std::endl;
return 0;
}
在這個例子中,我們創建了一個名為 MyComplex
的新類,它繼承自 std::complex<double>
。我們添加了兩個新的成員函數:magnitude()
和 phase()
,分別用于計算復數的模長和輻角。我們還添加了一個新的構造函數,允許用戶直接傳入實部和虛部來創建復數。
請注意,這只是一個簡單的例子,你可以根據需要添加更多功能。在實際應用中,你可能需要考慮更多細節,例如重載運算符、處理異常等。