我在C++中創建了一個bigInt類。在重載一些運算符的同時,我需要將對象本身作爲參數傳遞給它的一個成員函數。我知道我可以用*this
來做到這一點。我也可以通過創建具有相同成員變量的同一個類的另一個對象並將其作爲參數傳遞給它。但有什麼辦法可以跳過*this
,也不會創建另一個對象?如何將對象作爲參數傳遞給其某個成員函數?
下面是使用*this
我所做的代碼:
using namespace std;
class bigInt {
private:
string value;
public:
template<class T>
bigInt(T x) {
//.... .... ....constructor
}
bigInt operator+ (bigInt num) {
//... ... ... my code here
}
template<class T>
bigInt operator+ (T x) {
return *this + bigInt(x);
}
};
這裏是我創建的類BIGINT的另一個對象的代碼:
using namespace std;
class bigInt {
private:
string value;
public:
template<class T>
bigInt(T x) {
//.... .... ....constructor
}
bigInt operator+ (bigInt num) {
//... ... ... my code here
}
template<class T>
bigInt operator+ (T x) {
return bigInt(value) + bigInt(x);
}
};
請告訴我,我該怎麼辦沒有使用*this
或創建另一個對象的同樣的事情?
N.B.我聽說使用this
指針通常被認爲是不好的編程習慣。這是真的還是不?如果這是真的,是否有任何情況下不被認爲是不好的做法?
你有一個「使用這個指針通常被認爲是一個糟糕的編程習慣」的參考/鏈接?我很肯定,當你需要引用當前對象時,這是正確的做法。 –
爲什麼不使用名稱空間範圍的'operator +'而不是成員函數? –
在適當的地方使用'* this'沒有任何問題。儘管如此,你應該可能會將你的參數作爲常量引用傳遞。 – md5i