声明一个哺乳动物Mammal类,再由此派生出狗Dog类,声明一个Dog类的对象,观察基类与派生类的构造函数与析构函数的调用顺序
#include<iostream>
#include<stdio.h>
#include<string>
using namespace std;
class Mammal
{
public:
//先声明mammal的类的构造和析构
Mammal();
~Mammal();
int GetAge()const { return age; }
void SetAge(int anotherage) { age = anotherage; }
void TestMammal() { cout << "Mammal includes much species" << endl; }
protected:
int age;//哺乳动物的年龄
};
class Dog :public Mammal
{
public:
Dog();
~Dog();
int GetWeight()const { return weight; }
void SetWeight(int anotherweight) { weight = anotherweight; }
void TestDog() { cout << "Dog is belong to Mammal" << endl; }
protected:
int weight;
};
Mammal::Mammal() :age(1)
{
cout << "此时是Mammal的构造函数" << endl;
}
Mammal::~Mammal()
{
cout << "此时是Mammal的析构函数" << endl;
}
Dog::Dog() :weight(27)
{
cout << "此时是Dog的构造函数" << endl;
}
Dog::~Dog()
{
cout << "此时是Dog的析构函数" << endl;
}
int main()
{
Dog zr;
zr.TestMammal();
zr.TestDog();
cout << "zr is " << zr.GetAge() << " yeas old" << endl;
cout << "zr is " << zr.GetWeight() << " kg" << endl;
return 0;
}