单目运算符重载为成员函数
时间: 2023-08-21 21:09:09 浏览: 52
单目运算符重载可以作为类的成员函数来实现,这样可以更方便地访问类的私有成员变量。
以重载取反运算符(!)为例,可以在类中定义如下成员函数:
```cpp
class MyClass {
public:
bool operator!() const {
return !somePrivateMember; // somePrivateMember 为类的私有成员变量
}
private:
bool somePrivateMember;
};
```
这样就可以通过以下方式使用取反运算符:
```cpp
MyClass obj;
if (!obj) {
// somePrivateMember 为 true 时执行
}
```
需要注意的是,成员函数形式的单目运算符重载只能对该类的对象进行操作,无法对其他类型的操作数进行操作。如果需要对其他类型进行操作,可以使用全局函数形式的单目运算符重载。
相关问题
后置单目运算符重载
后置单目运算符重载是指重载类的成员函数,用于实现对类对象进行后置单目运算符的操作。后置单目运算符通常是在变量名之后添加一个操作符,例如++。在重载后置单目运算符时,需要注意以下几点:
1.函数必须是一个成员函数,且参数列表为空。
2.函数名必须是operator++,后面可以加一个int类型的占位符参数。
3.函数必须有返回值,返回类型可以是类对象或者其他类型。
4.函数体中需要实现对类对象的操作,例如改变对象的值等。
5.在函数体中需要返回对象的旧值,以实现后置单目运算符的语义。
下面是一个后置单目运算符重载的例子:
```c++
class MyClass{
public:
int value;
MyClass operator++(int){
MyClass old = *this;
value++;
return old;
}
};
```
在这个例子中,我们重载了后置++运算符。当使用后置++对类对象进行操作时,会先返回对象的旧值,然后再将对象的值加1。
运算符重载为友元函数
友元运算符重载函数是指将运算符重载函数定义为某个类的友元函数。友元函数是在类外部定义的,但可以访问类的私有成员。运算符重载函数有两种形式:全局的友元函数和类的成员函数。一般来说,双目运算符重载为类的友元函数,而单目运算符重载为类的成员函数。需要注意的是,赋值复合运算符(如=、+=等)必须重载为类的成员函数。另外,友元运算符重载函数不需要在定义时加上类名前缀。如果友元运算符重载函数重载的是双目运算符,则参数表中有两个操作数;如果重载的是单目运算符,则参数表中只有一个操作数。