我在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
指针通常被认为是一种糟糕的编程习惯。这是真的吗?如果是真的,是否有任何不被视为不良做法的情况?
更新:在此上下文中使用*this
是完全可以的。激励我提出这个问题的文章完全是在谈论其他事情。但作为一名新手程序员,我并不了解那里的背景。
答案 0 :(得分:0)
模板化运算符+是多余的;只需删除它。
在其他新闻中:
还要考虑将bigInt operator+ (bigInt num)
更改为bigInt operator+ (bigInt const& num)
以避免不必要的低效率。
另外,请考虑将其设为friend
函数,以便参数的顺序无关紧要。