本文原文来自:什么是多态?面向对象中对多态的理解
多态(Polymorphism)是面向对象编程(OOP)中的一个核心概念,它允许对象以多种形式出现。多态性使得同一个接口可以用于不同的数据类型,从而使得代码更加灵活和可扩展。
简单来说,多态就是一个接口,一个类,一个抽象类,一个类里面的方法,不同类的同一个方法,都可以有多种实现,这个在面向对象里面,就对应着继承、重载、重写等具体的方式。
多态的优点优点:
多态性是面向对象编程中的一个重要特性,它允许对象以多种形式出现,从而使得代码更加灵活和可扩展。通过编译时多态(如函数重载和运算符重载)和运行时多态(如虚函数和接口),可以实现不同的多态性行为。
多态性主要分为两种类型:
#include <iostream>
class Print {
public:
void show(int i) {
std::cout << "Integer: " << i << std::endl;
}
void show(double d) {
std::cout << "Double: " << d << std::endl;
}
void show(const std::string& s) {
std::cout << "String: " << s << std::endl;
}
};
int main() {
Print p;
p.show(5); // 输出: Integer: 5
p.show(3.14); // 输出: Double: 3.14
p.show("Hello"); // 输出: String: Hello
return 0;
}
#include <iostream>
class Complex {
public:
double real, imag;
Complex(double r = 0, double i = 0) : real(r), imag(i) {}
Complex operator + (const Complex& other) {
return Complex(real + other.real, imag + other.imag);
}
void display() {
std::cout << real << " + " << imag << "i" << std::endl;
}
};
int main() {
Complex c1(3.0, 4.0), c2(1.0, 2.0);
Complex c3 = c1 + c2;
c3.display(); // 输出: 4 + 6i
return 0;
}
#include <iostream>
class Base {
public:
virtual void show() {
std::cout << "Base class show function" << std::endl;
}
};
class Derived : public Base {
public:
void show() override {
std::cout << "Derived class show function" << std::endl;
}
};
int main() {
Base* basePtr;
Derived derivedObj;
basePtr = &derivedObj;
basePtr->show(); // 输出: Derived class show function
return 0;
}
#include <iostream>
class Shape {
public:
virtual void draw() = 0; // 纯虚函数
};
class Circle : public Shape {
public:
void draw() override {
std::cout << "Drawing Circle" << std::endl;
}
};
class Square : public Shape {
public:
void draw() override {
std::cout << "Drawing Square" << std::endl;
}
};
int main() {
Shape* shape1 = new Circle();
Shape* shape2 = new Square();
shape1->draw(); // 输出: Drawing Circle
shape2->draw(); // 输出: Drawing Square
delete shape1;
delete shape2;
return 0;
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。