C++类型转换操作符(Type Conversion Operator)

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 --