cpp11的Explicit conversion operators
时间: 2023-05-31 21:03:24 浏览: 134
C++ Explicit关键字详细解析
C++11引入了显式的类型转换运算符(Explicit conversion operators),可以将一个类转换为另一个类型。
显式类型转换运算符的语法如下:
```cpp
explicit operator type();
```
其中,type是要转换成的类型。
示例代码:
```cpp
#include <iostream>
using namespace std;
class A {
public:
explicit operator int() {
return 10;
}
};
int main() {
A a;
int n = static_cast<int>(a);
cout << n << endl; // output: 10
return 0;
}
```
在这个示例中,类A定义了一个显式类型转换运算符,将A类转换为int类型。在main函数中,使用static_cast进行类型转换,将a对象转换为int类型并赋值给n变量。最终输出n的值为10。
需要注意的是,显式类型转换运算符必须显式调用,不能隐式调用。这意味着在进行类型转换时,必须使用static_cast、reinterpret_cast、const_cast等显式的类型转换方式,不能通过隐式转换完成。这种限制使得代码更加安全可靠,避免了一些隐式类型转换导致的错误。
阅读全文