我已经定义了一个A类,实际属性是无关紧要的.是否可以定义static_cast<class T>(int)运算符的特化以从整数转换为A类?
到目前为止,我一直在通过定义转换函数来做到这一点,例如A convert(int).但我宁愿使用static_cast与其他转换的一致性.
可能吗?
我也想避免隐式转换,这就是为什么我不是通过A的构造函数来做这件事.
static_cast是一个语言关键字,你无法做任何改变.但是,您可以使用显式转换构造函数实现您的目标:
class Foo
{
public:
explicit Foo(int bar) { } // Can't be called implicitly, CAN be invoked with `static_cast`.
};
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为语言static_cast根据对象构造定义了行为,并在适当时调用转换.
| 归档时间: |
|
| 查看次数: |
3524 次 |
| 最近记录: |