次のプログラムを検討してください: (ここでライブデモを参照してください。 )
#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
クラス変換演算子を再利用できませんか?