#include class car; // declaration class car { // definition (also a declaration); public: car() : doors(2) { std::cout << "called the default car() constructor" << std::endl; }; car(int d, int p); ~car(); void start(); void stop(); int get_doors() const { return doors; }; int get_engine_power() const; private: int doors; int engine_power; bool engine_on; }; int car::get_engine_power() const { return engine_power; } car::car(int d, int p) : doors(d), engine_power(p), engine_on(false) { std::cout << "called the car(int,int) constructor" << std::endl; } car::~car() { std::cout << "called the destructor" << std::endl; } class race_car : public car { public: race_car() : car(0,500) { std::cout << "called the race_car() constructor" << std::endl; } ~race_car() { std::cout << "called the ~race_car() destructor" << std::endl; } private: int turbo; }; int main() { // in Java: car c = new car(); car c; // calls the default constructor car c2(4, 65); // calls the default constructor int i; std::cout << "Give me a number: " << std::flush; if ((std::cin >> i) && i > 0) { std::cout << "I have a race car!" << std::endl; race_car c3; } std::cout << "My race car -- if I had it -- is gone!" << std::endl; }