双目运算符重载作为成员函数,运算符左操作数是什么
时间: 2023-08-18 13:04:10 浏览: 114
当双目运算符重载作为成员函数时,运算符左操作数是调用成员函数的对象。也就是说,双目运算符重载作为成员函数时,左操作数是隐含的 this 指针所指向的对象。
例如,假设有一个名为 MyClass 的类,其中重载了加法运算符作为成员函数:
```
class MyClass {
public:
MyClass operator+(const MyClass& rhs) const {
MyClass result;
// 进行加法运算
return result;
}
};
```
在这个例子中,加法运算符重载作为 MyClass 的成员函数,在进行加法运算时,左操作数就是调用成员函数的对象,右操作数则通过参数传递进来。
例如,如果有两个 MyClass 对象 obj1 和 obj2,可以使用以下方式进行加法运算:
```
MyClass obj3 = obj1 + obj2;
```
在这个例子中,obj1 是调用成员函数的对象,也就是重载的加法运算符的左操作数,obj2 则是加法运算符的右操作数,加法运算的结果赋值给 obj3。
相关问题
双目运算符重载为类的成员函数,其左操作数为
双目运算符重载为类的成员函数时,左操作数为调用该成员函数的对象本身。例如,对于重载了"+"运算符的类成员函数,表达式"obj1 + obj2"中,"obj1"为调用该成员函数的对象,"obj2"为该成员函数的参数。在该成员函数中,可以通过"this"指针访问调用对象的成员变量和成员函数。需要注意的是,双目运算符重载为类的成员函数时,左操作数必须是该类的对象,右操作数可以是该类的对象或其他类型的数据。
单目运算符重载为成员函数
单目运算符重载可以作为类的成员函数来实现,这样可以更方便地访问类的私有成员变量。
以重载取反运算符(!)为例,可以在类中定义如下成员函数:
```cpp
class MyClass {
public:
bool operator!() const {
return !somePrivateMember; // somePrivateMember 为类的私有成员变量
}
private:
bool somePrivateMember;
};
```
这样就可以通过以下方式使用取反运算符:
```cpp
MyClass obj;
if (!obj) {
// somePrivateMember 为 true 时执行
}
```
需要注意的是,成员函数形式的单目运算符重载只能对该类的对象进行操作,无法对其他类型的操作数进行操作。如果需要对其他类型进行操作,可以使用全局函数形式的单目运算符重载。
阅读全文