如何将对象作为参数传递给其成员函数之一?

时间:2016-05-18 01:51:43

标签: c++

我在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是完全可以的。激励我提出这个问题的文章完全是在谈论其他事情。但作为一名新手程序员,我并不了解那里的背景。

1 个答案:

答案 0 :(得分:0)

模板化运算符+是多余的;只需删除它。

在其他新闻中:

  • 还要考虑将bigInt operator+ (bigInt num)更改为bigInt operator+ (bigInt const& num)以避免不必要的低效率。

  • 另外,请考虑将其设为friend函数,以便参数的顺序无关紧要。