C++ 一元运算符重载
在C++中,运算符重载是一种强大的特性,它允许我们为自定义类型定义运算符的行为。一元运算符是只需要一个操作数的运算符,比如递增(++
)、递减(--
)、负号(-
)、逻辑非(!
)等。通过重载这些运算符,我们可以使自定义类型的使用方式更加直观和自然。
什么是一元运算符?
一元运算符是只对一个操作数进行操作的运算符。C++中常见的一元运算符包括:
- 前置递增(
++a
)和后置递增(a++
) - 前置递减(
--a
)和后置递减(a--
) - 负号(
-a
) - 逻辑非(
!a
) - 按位取反(
~a
) - 地址运算符(
&a
) - 解引用运算符(
*a
)
一元运算符重载的基本语法
一元运算符重载可以通过成员函数或友元函数来实现:
成员函数形式
class ClassName {
public:
// 前置递增运算符
ReturnType operator++();
// 后置递增运算符(注意int参数)
ReturnType operator++(int);
// 负号运算符
ReturnType operator-() const;
// 逻辑非运算符
ReturnType operator!() const;
// ...其他一元运算符
};
友元函数形式
class ClassName {
friend ReturnType operator++(ClassName& obj);
friend ReturnType operator++(ClassName& obj, int);
friend ReturnType operator-(const ClassName& obj);
friend ReturnType operator!(const ClassName& obj);
// ...其他一元运算符
};
// 在类外部定义
ReturnType operator++(ClassName& obj) { /*...*/ }
ReturnType operator++(ClassName& obj, int) { /*...*/ }
// ...