c++面向对象程序设计多态性
时间: 2023-09-14 14:05:04 浏览: 115
面向对象多态c++
多态性是面向对象程序设计中一个非常重要的概念,它允许同一类型的函数或方法在不同情况下表现出不同的行为。在C++中,多态性有两种实现方式:虚函数和模板。
1. 虚函数
虚函数是一种特殊的成员函数,它可以在基类中被声明为虚函数,在派生类中进行重写。当使用基类指针或引用调用虚函数时,实际调用的是派生类中的重写函数,这就是多态性的体现。
例如:
```cpp
class Shape {
public:
virtual void draw() {
cout << "I am a shape." << endl;
}
};
class Circle : public Shape {
public:
void draw() {
cout << "I am a circle." << endl;
}
};
class Square : public Shape {
public:
void draw() {
cout << "I am a square." << endl;
}
};
int main() {
Shape* s1 = new Circle();
Shape* s2 = new Square();
s1->draw(); // I am a circle.
s2->draw(); // I am a square.
return 0;
}
```
2. 模板
模板是一种通用的编程技术,它可以实现代码的重用和泛化。在C++中,我们可以使用模板函数和模板类来实现多态性。
例如:
```cpp
template<typename T>
void swap(T& a, T& b) {
T temp = a;
a = b;
b = temp;
}
int main() {
int a = 10, b = 20;
swap(a, b); // a=20, b=10
double c = 1.23, d = 4.56;
swap(c, d); // c=4.56, d=1.23
return 0;
}
```
在上面的例子中,我们定义了一个通用的swap函数,可以交换任意类型的变量。当我们传入不同类型的变量时,编译器会自动实例化出对应类型的函数。这就是模板实现多态性的方式。
阅读全文