我有一個名爲Complex的類,其中有許多成員方法返回該Complex類的對象,還有許多將類Complex對象作爲參數的成員方法。使用指針或對象重載操作符
class Complex
{
public:
Complex sampleFunc(Complex c) { ... }
Complex operator+(Complex c) { ... }
};
這將是一個圖書館,所以其他用戶會使用我的課程。因爲,大多數用戶使用:
Complex *ptrObj = new Complex(); // declaration 1
,而不是使用:
Complex obj; // declaration 2
我已經寫上面將與申報工作,2但不與聲明1.我可以改變原型sampleFunc的代碼()如下:
Complex* sampleFunc(Complex *c) { ... }
但我不能改變有意義運營商+()函數來獲取增加了兩個對象(而不是錯誤地增加了兩個三分球)的效果。那麼,我應該公開哪些API - 適用於聲明1還是適用於聲明2,還是應該爲每個函數提供兩個版本?我相信傳遞函數的指針會更快,但是操作符重載會成爲一個問題。
如果它們被動態分配,然後存儲在某個地方,然後通過引用訪問,那麼你的重載將正常工作。你不能在指針類型上重載運算符。 – xaxxon
你班的實際意義是什麼?它的一個實例有多大? –
我的班級有一個字符數組,其長度可以從幾個字符到數千個字符不等。沒有其他數據成員存在,但該類包含大量函數(大約60+) – user1637645