📄 multivirtual.cpp
字号:
//Listing 17.2 Multiple virtual member functions called in turn
#include <iostream>
class Mammal
{
public:
Mammal():itsAge(1) { }
~Mammal() { }
virtual void Speak() const { std::cout << "Mammal speak!\n"; }
protected:
int itsAge;
};
class Dog : public Mammal
{
public:
void Speak()const { std::cout << "Woof!\n"; }
};
class Cat : public Mammal
{
public:
void Speak()const { std::cout << "Meow!\n"; }
};
class Horse : public Mammal
{
public:
void Speak()const { std::cout << "Winnie!\n"; }
};
class Pig : public Mammal
{
public:
void Speak()const { std::cout << "Oink!\n"; }
};
int main()
{
Mammal* theArray[5];
Mammal* ptr;
int choice, i;
for ( i = 0; i<5; i++)
{
std::cout << "(1)dog (2)cat (3)horse (4)pig: ";
std::cin >> choice;
switch (choice)
{
case 1:
ptr = new Dog;
break;
case 2:
ptr = new Cat;
break;
case 3:
ptr = new Horse;
break;
case 4:
ptr = new Pig;
break;
default:
ptr = new Mammal;
break;
}
theArray[i] = ptr;
}
for (i=0;i<5;i++)
theArray[i]->Speak();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -