最近开始学C++,做一下记录。
User-defined conversion function 自定义类型转换函数
Enables implicit convension or explicit conversion from a class type to another type. 给类类型提供显示或隐式转换。
隐式转换 implicit conversion
operator target_type() const; 在 RIF 中的用法 operator int8_t() const { return datum.i8; }
1.可以对整型进行隐式转换,指针进行显式转换。 2.使用 explicit 和 static_cast<> 进行显式转换。
cpp reference 举的例子:
struct X{
// implicit conversion
operator int() const { return 7; }
// explicit conversion
explicit operator int*() const { return nullptr; }
// Error: array operator not allowed in conversion-type-id
// operator int(*)[3]() const { return nullptr; }
using arr_t = int[3];
operator arr_t*() const { return nullptr; } // OK if done through typedef
// operator arr_t () const; // Error: conversion to array not allowed in any case
};
int main(){
X x;
int n = static_cast<int>(x); // OK: sets n to 7
int m = x; // OK: sets m to 7
int* p = static_cast<int*>(x); // OK: sets p to null
//int* q = x; // Error: no implicit conversion
int (*pa)[3] = x; // OK
}