Tutorial by Examples: covariant

Func also supports Covariant & Contravariant // Simple hierarchy of classes. public class Person { } public class Employee : Person { } class Program { static Employee FindByTitle(String title) { // This is a stub for a method that returns // an employee that h...
// 1. Base example not using language support for covariance, dynamic type checking. class Top { public: virtual Top* clone() const = 0; virtual ~Top() = default; // Necessary for `delete` via Top*. }; class D : public Top { public: Top* clone() const override ...
// 2. Covariant result version of the base example, static type checking. class Top { public: virtual Top* clone() const = 0; virtual ~Top() = default; // Necessary for `delete` via Top*. }; class D : public Top { public: D* /* ← Covariant return */ clone() const over...
// 3. Covariant smart pointer result (automated cleanup). #include <memory> using std::unique_ptr; template< class Type > auto up( Type* p ) { return unique_ptr<Type>( p ); } class Top { private: virtual Top* virtual_clone() const = 0; public: unique_ptr&l...

Page 1 of 1