C++中,多态技术是面向对象程序设计的核心概念之一,也是很多高级应用领域中普遍存在的技术。多态可以使得不同的对象通过同一个接口实现不同的行为,提高了程序的可扩展性和代码的可复用性。
多态技术主要通过继承和虚函数来实现,子类继承父类后可以重写(override)父类的虚函数,从而实现不同的行为。在runtime时,通过基类指针或者引用来调用虚函数,可以实现采用不同子类对象时调用的不同函数。
多态的用途举例:
- 实现动态绑定
例如,下面通过Dog和Cat继承自Animal类来演示多态实现动态绑定的例子:
#include <iostream>
using namespace std;
class Animal
{
public:
// virtual关键字表示该函数是虚函数
virtual void speak()
{
cout<<"Animal speaking!"<<endl;
}
};
class Dog:public Animal
{
public:
void speak()
{
cout<<"Dog barking!"<<endl;
}
};
class Cat:public Animal
{
public:
void speak()
{
cout<<"Cat meowing!"<<endl;
}
};
int main()
{
Animal *pAnimal = NULL;
Dog myDog;
Cat myCat;
pAnimal = &myDog;
pAnimal->speak();
pAnimal = &myCat;
pAnimal->speak();
return 0;
}
上面的代码把父类指针pAnimal指向不同的子类对象,当调用虚函数时,使用子类的函数,实现了动态绑定。
- 实现多态容器
另外一个经典的使用多态的例子是实现多态容器。例如,使用一个Animal*数组来存储不同的Animal对象,然后逐个调用它们的虚函数:
#include <iostream>
using namespace std;
class Animal
{
public:
virtual void speak()
{
cout<<"Animal speaking!"<<endl;
}
};
class Dog:public Animal
{
public:
void speak()
{
cout<<"Dog barking!"<<endl;
}
};
class Cat:public Animal
{
public:
void speak()
{
cout<<"Cat meowing!"<<endl;
}
};
int main()
{
Animal *pAnimals[3];
pAnimals[0] = new Animal();
pAnimals[1] = new Dog();
pAnimals[2] = new Cat();
for(int i=0;i<3;i++)
{
pAnimals[i]->speak();
delete pAnimals[i];
}
return 0;
}
上面的代码通过一个Animal*数组来存储不同的Animal对象,然后逐个调用它们的虚函数speak(),实现了多态容器。
Markdown格式总结:
C++多态技术
1. 多态技术基础
多态技术的实现主要通过继承和虚函数来实现,子类继承父类后可以重写(override)父类的虚函数,从而实现不同的行为
2. 实现动态绑定的例子
下面通过Dog和Cat继承自Animal类来演示多态实现动态绑定的例子:
#include <iostream>
using namespace std;
class Animal
{
public:
virtual void speak()
{
cout<<"Animal speaking!"<<endl;
}
};
class Dog:public Animal
{
public:
void speak()
{
cout<<"Dog barking!"<<endl;
}
};
class Cat:public Animal
{
public:
void speak()
{
cout<<"Cat meowing!"<<endl;
}
};
int main()
{
Animal *pAnimal = NULL;
Dog myDog;
Cat myCat;
pAnimal = &myDog;
pAnimal->speak();
pAnimal = &myCat;
pAnimal->speak();
return 0;
}
3. 实现多态容器的例子
例如,使用一个Animal*数组来存储不同的Animal对象,然后逐个调用它们的虚函数:
#include <iostream>
using namespace std;
class Animal
{
public:
virtual void speak()
{
cout<<"Animal speaking!"<<endl;
}
};
class Dog:public Animal
{
public:
void speak()
{
cout<<"Dog barking!"<<endl;
}
};
class Cat:public Animal
{
public:
void speak()
{
cout<<"Cat meowing!"<<endl;
}
};
int main()
{
Animal *pAnimals[3];
pAnimals[0] = new Animal();
pAnimals[1] = new Dog();
pAnimals[2] = new Cat();
for(int i=0;i<3;i++)
{
pAnimals[i]->speak();
delete pAnimals[i];
}
return 0;
}
以上是C++中的多态技术的详细讲解,希望能够帮助到学习者。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++中的多态是什么? - Python技术站