Last Updated: 2023-12-20 05:32:30 Wednesday
-- TOC --
在高级语言中,type的数量是无穷的!type转换这个动作常常很有必要,C++可以给class对象,定义type conversion operator,将一个对象,按照自定义的方式,转换成另一个不同type的对象。
下面用示例代码说明:
#include <iostream>
#include <string>
using namespace std;
struct bob{
string name;
int age;
};
struct xyz{
const static int value { 999 };
operator int(){ // cannot take any parameters
return 123;
}
operator string(){ // type operator, no need return type
return "operator...";
}
int operator ()(int a){ // must specify return type for operator ()
return value+a; // can take parameter
}
operator bob(){ // bob is also a type, no parameter and return type
return {"bob", value};
}
};
int main(void) {
xyz x;
cout << int(x) << endl; // 123
cout << string(x) << endl; // operator...
cout << x(2) << endl; // 1001
bob b { bob(x) };
cout << b.name << ":" << b.age << endl; // bob:999
return 0;
}
Type conversion operator,主打就是一个type,以type来命名operator,虽然语法格式与operator overload一样,但是没有parameter,也不能设置return type。
本文链接:https://cs.pynote.net/sf/c/cpp/202302191/
-- EOF --
-- MORE --