如何将对象作为参数传递给其成员函数之一
How can I pass an object as an argument to one of its member functions?
我在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
函数,这样参数的顺序就无关紧要了。
相关文章:
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 将公共但非静态的成员函数与ALGLIB集成
- 使用指向成员的指针将成员函数作为参数传递
- 将重载的成员函数传递给函数模板
- 我不小心调用了一个没有自己类对象的成员函数.但这是怎么回事呢
- 如何在C++中使用非静态成员函数作为回调函数
- C++错误C2600:无法定义编译器生成的特殊成员函数(必须首先在类中声明)
- 关联容器的下界复杂性:成员函数与非成员函数
- 在 C++ 中用派生类型重写成员函数
- 链表的泛型函数remove()与成员函数remove)
- 如何将lambda作为模板类的成员函数参数
- constexpr构造函数需要常量成员函数时出现问题
- 将自由函数绑定为类成员函数
- 区分非成员函数和头文件中的成员函数
- 如何从子成员函数修改父公共成员变量
- 保留对其他类的成员函数的引用
- 在运算符重载定义中使用成员函数(const错误)
- 内联如何影响模块接口中的成员函数
- 将成员函数指针作为参数传递给模板方法