【北上广深杭大厂编程面试题】C++篇...这里介绍C++是如何实现多态的?(一)

【北上广深杭大厂编程面试题】C++篇…这里介绍C++是如何实现多态的?(一)

【北上广深杭大厂编程面试题】C++篇…这里介绍C++是如何实现多态的?(一)



欢迎铁子们点赞、关注、收藏!
祝大家逢考必过!逢投必中!上岸上岸上岸!upupup

大多数高校硕博生毕业要求需要参加学术会议,发表EI或者SCI检索的学术论文会议论文:
可访问艾思科蓝官网,浏览即将召开的学术会议列表。会议详细信息可参考:https://ais.cn/u/EbMjMn

前言

C++ 中的 多态 是面向对象编程(OOP)中的一个重要特性,它允许不同的对象对同一个消息作出不同的响应。具体来说,C++ 的多态通常分为两种类型:

  1. 编译时多态(静态多态)
  2. 运行时多态(动态多态)

1. 编译时多态(静态多态)

编译时多态指的是在编译期间就确定了调用的函数版本,它通过函数重载和运算符重载来实现。C++ 允许我们在同一个作用域内定义多个函数或运算符,它们具有相同的名称,但是参数的类型、个数或顺序不同。

常见实现方式:

  • 函数重载:同名的函数可以根据参数不同来区分。
  • 运算符重载:C++允许用户定义自定义运算符(如 +- 等)。

示例:函数重载

#include <iostream>
using namespace std;

class Print {
public:
    void display(int i) {
        cout << "Displaying integer: " << i << endl;
    }

    void display(double d) {
        cout << "Displaying double: " << d << endl;
    }

    void display(const string& s) {
        cout << "Displaying string: " << s << endl;
    }
};

int main() {
    Print p;
    p.display(5);        // 调用 display(int)
    p.display(3.14);     // 调用 display(double)
    p.display("Hello");  // 调用 display(string)
    return 0;
}

示例:运算符重载

#include <iostream>
using namespace std;

class Complex {
private:
    int real, imag;
public:
    Complex(int r, int i) : real(r), imag(i) {}

    // 运算符重载 + 
    Complex operator+(const Complex& other) {
        return Complex(real + other.real, imag + other.imag);
    }

    void display() {
        cout << real << " + " << imag << "i" << endl;
    }
};

int main() {
    Complex c1(2, 3), c2(4, 5);
    Complex c3 = c1 + c2;  // 使用重载的 + 运算符
    c3.display();  // 输出 6 + 8i
    return 0;
}

  • 注意:编译时多态是通过函数或运算符的重载来实现的,而不是动态类型判断。

总结

  • 编译时多态:通过函数重载和运算符重载实现。编译器在编译期间确定调用哪个函数版本。
  • 运行时多态:通过虚函数和继承实现。C++ 在运行时通过动态绑定根据实际对象类型调用相应的函数版本。
  • 纯虚函数与抽象类:用于设计接口或抽象类,要求派生类实现特定的功能。

多态是 C++ 强大的面向对象特性之一,它使得程序更具扩展性和灵活性,尤其在需要统一接口的场景下非常有用。

下节请参考:【北上广深杭大厂编程面试题】C++篇…这里介绍C++是如何实现多态的?(二)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值