August 2017
Intermediate to advanced
438 pages
14h 19m
English
Imagine that some programmer designed such an awful interface as follows (this is a good example of how interfaces should not be written):
struct object { virtual ~object() {} }; struct banana: public object { void eat() const {} virtual ~banana(){} }; struct penguin: public object { bool try_to_fly() const { return false; // penguins do not fly } virtual ~penguin(){} }; object* try_produce_banana();
Our task is to make a function that eats bananas, and throws exceptions if something different came instead of banana ( try_produce_banana() may return nullptr)so if we dereference a value returned by it without checking we are in danger of dereferencing a null pointer.
Read now
Unlock full access