考虑以下程序:(在此处查看现场演示。)
#include <iostream>
class Base
{
int s{9};
public:
operator int()
{
return s;
}
};
class Derived : public Base
{
int s{18};
};
int main()
{
Base b;
int s=b;
std::cout<<s<<'\n';
Derived d;
int m=d;
std::cout<<m;
}
程序的输出是:
9
9
Base
这里继承了类的转换运算符,所以m
变量的初始化是有效的。
但现在我想打印s
属于 Derived 的数据成员的值。我怎样才能做到这一点?
是否也需要为派生类重写转换运算符?我不能重用相同的Base
类转换运算符吗?