enum BREED
{
Golden,Teddy,ChineseField
};
class Mammal
{
public:
Mammal(){}
Mammal(int newAge, int newWeight) :age(newAge), weight(newWeight)
{
cout << "Mammal Constructor!" << endl;
}
~Mammal()
{
cout << "Mammal Destructor!" << endl;
}
void speak() const
{
cout << "Mammal speak!" << endl;
}
void speak(string voice)
{
cout << "Mammal speak:"<<voice << endl;
}
protected:
int age;
int weight;
};
class Dog:public Mammal
{
public:
Dog():Mammal(3,15),breed(ChineseField)
{
cout << "Dog Constructor!" << endl;
}
~Dog()
{
cout << "Dog Constructor!" << endl;
}
void speak()//重写speak函数
{
cout << "Dog speak!" << endl;
}
private:
BREED breed;
};
int _tmain(int argc, _TCHAR* argv[])
{
Dog dog;
dog.speak();
//dog.speak("wang...");//error:dog类重写了speak,把父类同名的两个speak都隐藏了。
dog.Mammal::speak("wang...");//只能显示调用该speak(string)
}
输出:
Mammal Constructor!
Dog Constructor!
Dog speak!
Mammal speak:wang...
Dog Constructor!
Mammal Destructor!
请按任意键继续. . .