Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- class is_printable {
- public:
- virtual std::ostream& print() const = 0;
- };
- class A : public is_printable {
- public:
- A(std::string s)
- : _s(s)
- {
- }
- std::ostream& print() const override
- {
- return std::cout << _s;
- }
- private:
- std::string _s;
- };
- class B : public is_printable {
- public:
- B(int s)
- : _s(s)
- {
- }
- std::ostream& print() const override
- {
- return std::cout << _s;
- }
- private:
- int _s;
- };
- std::ostream& operator<<(std::ostream& s, const is_printable& o)
- {
- return o.print();
- }
- int main()
- {
- A a("Tekst");
- B b { 123 };
- std::cout << "a:\t" << a << "; b:\t" << b << "\n";
- is_printable& a_r = a;
- is_printable& b_r = b;
- std::cout << "a_r:\t" << a_r << "; b_r:\t" << b_r << "\n";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement