Рассмотрим следующий код:
#include <list>
#include <iostream>
class test{
private:
std::list<double> lst;
public:
int get_size(){
return lst.size();
}
};
class derived : public test{
private:
std::list<double> lst;
public:
derived(int u=8){
for (int k =0 ; k < u; ++k){
int n = lst.size();
lst.push_back(0);
}
}
};
int main(){
derived obj = derived();
std::cout << obj.get_size() << "\n";
return 0;
}
Я пытаюсь понять, почему вывод вышеприведенного кода не 8
. Я думал, что идея наследования позволяет использовать функции-члены базового класса в производном классе, но кажется, что это не работает. Конечно, я мог бы сделать get_size
функцию virtual
в базовом классе, а затем скопировать, вставить код в производный класс и добавить override
, но это кажется действительно странным, поскольку в этом случае я мог бы просто повторно реализоватьфункционировать в любом случае ... Так может кто-нибудь объяснить, как мы должны изменить код сверху, чтобы получить вывод 8
?