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

How can I pass an object as an argument to one of its member functions?

本文关键字:成员 函数 参数传递 对象      更新时间:2023-10-16

我在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是完全可以的。启发我提出这个问题的那篇文章完全是在谈论另一件事。但作为一个新手程序员,我不了解那里的上下文。

模板化运算符+是多余的;只需将其移除即可。


其他新闻:

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

  • 另外,考虑将其设为friend函数,这样参数的顺序就无关紧要了。