xml*_*lmx 13 c++ virtual explicit function c++11
struct A
{
// error C2216: 'explicit' cannot be used with 'virtual'
virtual explicit operator bool() const
{
return true;
}
};
struct B : A
{
// error C2216: 'explicit' cannot be used with 'override'
explicit operator bool() const override
{
return false;
}
};
int main()
{
if (A())
{}
if (B())
{}
}
Run Code Online (Sandbox Code Playgroud)
我的编译器是VC++ 2013 RC.
为什么explicit不兼容virtual?
理由是什么?
Luc*_*ore 18
看起来像一个错误,因为以下引用证明它们确实是兼容的,我找不到任何禁止它的东西.
2)转换功能可以是
explicit[
...]
5 ... 转换功能可以是virtual.
和
5)
virtual说明符只能用于非静态类成员函数的初始声明; 见10.3.
6)explicit说明符只能用于其类定义中的构造函数或转换函数的声明; 见12.3.1和12.3.2.
| 归档时间: |
|
| 查看次数: |
1913 次 |
| 最近记录: |