网站设计在营销中的作用,交互式网站设计 深圳,最近一周的新闻大事10条,常见的网页编辑软件目录 定义operator重载运算符operator重载函数调用运算符operator类型转换操作符 定义
C11 中#xff0c;operator 是一个关键字#xff0c;用于重载运算符。通过重载运算符#xff0c;您可以定义自定义类型的对象在使用内置运算符时的行为。
operator重载用法一般可以分为… 目录 定义operator重载运算符operator重载函数调用运算符operator类型转换操作符 定义
C11 中operator 是一个关键字用于重载运算符。通过重载运算符您可以定义自定义类型的对象在使用内置运算符时的行为。
operator重载用法一般可以分为以下三类
operator可以重载我们运算符“±*/”等;还可以重载我们的函数调用运算符operator();还可以做类型转换运算符
operator重载运算符
常见用法
#include iostreamclass MyNumber {
private:int value;public:MyNumber(int num) : value(num) {}int getValue() const {return value;}// 重载加法运算符 MyNumber operator(const MyNumber other) {int sum value other.value;return MyNumber(sum);}
};int main() {MyNumber num1(5);MyNumber num2(10);MyNumber sum num1 num2; // 使用重载的加法运算符进行相加操作std::cout Sum: sum.getValue() std::endl;return 0;
}可以看到MyNumber sum num1 num2;看起来是对象相加其实是进入了重载的运算符相加的是对象中的成员变量。
operator重载函数调用运算符
class Adder {
public:int operator()(int a, int b) {return a b;}
};
// 使用函数对象进行加法运算
Adder add;
int result add(3, 4); // 调用 operator()返回结果 7看起来add就和函数一样但其实不然只是重载函数调用运算符后可以让实例化的add对象像函数一样使用。这也被称为仿函数这个词算是非常形象了。
operator类型转换操作符
类型转换操作符type conversion operator是一种特殊的类成员函数它定义将类类型值转变为其他类型值的转换。转换操作符在类定义体内声明在保留字 operator 之后跟着转换的目标类型。
class MyType {
public:using fr_t void(*)(int);static void func(int a){std::cout the value: a std::endl;}operator fr_t() {// 执行适当的转换操作// 将 MyType 转换为 fr_treturn func;//这里是将函数指针赋给了fr_t}
};// 使用类型转换运算符进行类型转换
MyType obj;
obj(2); // 这里涉及到两步动作一是调用 operator fr_t()将 obj 转换为 fr_t 类型二是调用了fr_t2 原理转换函数必须是成员函数不能指定返回类型并且形参表必须为空返回值是隐含的返回值是与转换的类型相同的即为上面原型中的函数指针类型fr_t以及返回的函数func必须对应起来 obj(2);这行代码的执行过程有点难理解可分为两步
一是调用 operator fr_t()将 obj 转换为 fr_t 类型二是调用了fr_t(2); 这里fr_t函数指针已经指向了func所以可以直接调用。