Лето, температура за бортом +10, что уже радует.
Решили порешать задачки, ни у одну подкидываю.
Есть код:
#include <iostream>
class Foo {
public:
Foo() : a_(0) {};
Foo(int a) : a_(a) {};
inline int getA() { return a_; };
virtual void print() { std::cout << "{a: " << getA() << "}\n"; };
private:
int a_;
};
class Bar : public Foo {
public:
Bar() : Foo(), b_(0) {};
Bar(int a, int b) : Foo(a), b_(b) {};
inline int getB() { return b_; };
virtual void print() override { std::cout << "{a: " << getA() << ", b: " << getB() << "}\n"; };
private:
int b_;
};
int main() {
Foo t1 = Bar(10,10);
Bar t2 = Bar(20,20);
Foo *t3 = new Bar(30,30);
t1.print();
t2.print();
t3->print();
delete t3;
return 0;
}
Выхлоп ожидаемый:
...$ g++ -std=c++11 task.cpp && ./a.out
{a: 10}
{a: 20, b: 20}
{a: 30, b: 30}
И тут вопрос: «А как сделать вывод в первой строке такой же как в других? А чем это будет плохо?»