add some classes experiment

master
neingeist 11 years ago
parent 0b0c4cfdcb
commit d45fdd153d

1
.gitignore vendored

@ -14,3 +14,4 @@ accumulate
object-lifetime object-lifetime
shared_ptr shared_ptr
casts casts
classes

@ -14,3 +14,4 @@ add_executable(accumulate accumulate.cpp)
add_executable(object-lifetime object-lifetime.cpp) add_executable(object-lifetime object-lifetime.cpp)
add_executable(shared_ptr shared_ptr.cpp) add_executable(shared_ptr shared_ptr.cpp)
add_executable(casts casts.cpp) add_executable(casts casts.cpp)
add_executable(classes classes.cpp)

@ -0,0 +1,41 @@
#include <iostream>
#include <vector>
class Animal {
public:
// Note: using *virtual* does the difference here!
virtual void makeSound() {
std::cout << "<generic animal sound>" << std::endl;
}
};
class Cow : public Animal {
public:
void makeSound() {
std::cout << "Mooh." << std::endl;
}
};
class Cat : public Animal {
public:
void makeSound() {
std::cout << "Meow?" << std::endl;
}
};
int main() {
Cat cat;
Cow cow;
// Does nothing:
std::vector<Animal> animals = { cat, cow };
for (auto &a: animals) {
a.makeSound();
}
// Meow? Mooh.
std::vector<Animal*> animalptrs = { &cat, &cow };
for (auto &a: animalptrs) {
a->makeSound();
}
}
Loading…
Cancel
Save