#include <iostream>
using namespace std;
struct base
{
virtual operator int()
{
return 1;
}
virtual ~base() {}
};
struct derive : public base
{
template <class _Ty>
operator _Ty()
{
return _Ty();
}
};
int main()
{
derive cd;
base & cb = cd;
int i = cd;
cout << i << "/n";
i = cd.derive::operator int();
cout << i << "/n";
i = cb;
cout << i << "/n";
double d = cd;
cout << d << "/n";
}
vc.net: 1 1 1 0
gcc: 1 0 1 1
icc: 0 0 1 0
派生类中的模板成员把基类的同名函数隐蔽了(即便是还未具现化)(保留)
using namespace std;
struct base
{
virtual operator int()
{
return 1;
}
virtual ~base() {}
};
struct derive : public base
{
template <class _Ty>
operator _Ty()
{
return _Ty();
}
};
int main()
{
derive cd;
base & cb = cd;
int i = cd;
cout << i << "/n";
i = cd.derive::operator int();
cout << i << "/n";
i = cb;
cout << i << "/n";
double d = cd;
cout << d << "/n";
}
vc.net: 1 1 1 0
gcc: 1 0 1 1
icc: 0 0 1 0
派生类中的模板成员把基类的同名函数隐蔽了(即便是还未具现化)(保留)
博客给出一段C++代码示例,定义了基类和派生类,派生类中有模板成员函数。代码在main函数中进行了不同类型转换操作,并展示了代码在vc.net、gcc、icc编译器下的运行结果,指出派生类中的模板成员会隐蔽基类的同名函数。
3699

被折叠的 条评论
为什么被折叠?



