#include "stdafx.h" #include <string.h> #include <iostream> using namespace std; const int cObjectNameLength = 32; class Animal { public: Animal () { cout << "Construct an animal..." << endl; strcpy(this->name, ""); this->age = 0; Animal::s_count++; } Animal (const Animal& src) { cout << "Copy construct an animal..." << endl; Animal::s_count++; } void Run() const { cout << "Animal Run Constantly..." << endl; } virtual void Run() { cout << "Animal Runs fastly..." << endl; } void SetName(const char* name) { strncpy(this->name, name, cObjectNameLength); } void SetAge(int age) { this->age = age; } virtual void Eat() { cout << "Animal eats..." << endl; } protected: char name[cObjectNameLength]; int age; public: static int s_count; }; class Dog : public Animal { public: Dog () { cout << "Construct a dog..." << endl; } Dog (const Dog& src) { cout << "Copy construct a dog..." << endl; } void Eat() { cout << "Dog eats bone..." << endl; } void Run() { cout << "Dog Runs fastly..." << endl; } protected: public: }; int Animal::s_count = 0; //Test Const int _tmain(int argc, _TCHAR* argv[]) { Dog d1; d1.SetName("Puppy"); d1.SetAge(11); const Animal* ad1 = &d1; Animal* const ad2 = &d1; const Dog* dd1 = &d1; Dog* const dd2 = &d1; ad1->Run(); ad2->Run(); dd2->Run(); return 0; }