Page MenuHomec4science

abstract_class.hh
No OneTemporary

File Metadata

Created
Tue, Oct 1, 21:08

abstract_class.hh

#include <iostream>
class Animal {
public:
Animal(std::string name) { this->name = name; }
virtual void scream() = 0;
protected:
std::string name;
};
class Cat : public Animal {
public:
Cat(const std::string &name) : Animal(name){};
void scream() override { std::cout << name << ": MIAOU\n"; }
};
void makeItScream(Animal &a) { a.scream(); }
int main() {
// this will lead to compilation error
Animal a("kitty");
Cat c("kitty"); // ok
Animal *ptr = &c; // ok
Animal &ref = c; // ok
makeItScream(c); // ok
}

Event Timeline