operator
operator 是 C++ 一个重载操作符的关键字,但是 operator 除了可以重载操作符以外,还可以用做对两个不同类的转换。
具体使用如下:
#include<iostream> using namespace std; struct X { X(){ num = 10; } // implicit conversion operator int() { return 7; } // explicit conversion explicit operator int*() { return # // return nullptr; } // it's ok through typedef using arr_t = int[3]; operator arr_t*() const { return nullptr; } // Error: array operator not allowed in conversion-type-id // operator int(*)[3]() const { return nullptr; } // Error: conversion to array not allowed in any case // operator arr_t() const int num; arr_t* arr; }; struct To { To() = default; To(const struct From&) { cout << "const struct From&" << endl; } }; struct From { operator To() const { cout << "operator To() in class From" << endl; return To(); } }; int main() { X x; int n = static_cast<int>(x); int m = n; cout << "n : " << n << endl; cout << "m : " << m << endl; int *p = static_cast<int*> (x); cout << "*p : " << *p << endl; int (*pa)[3] = x; // ? how to reurn a pointer that is a type of int[3] From f; To t1(f); // direct-initialization: calls the constructor To t3 = static_cast<To> (f); // direct-initialization: calls the constructor const To& r = f; // reference-initialization }
通过初始化的方式,直接初始化或者拷贝初始化,将一个类转化为另一个类。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)