class_8:函数重载和运算符重载

文章讲述了在C++中,函数重载不仅取决于返回值,还依赖于参数的数量、类型以及顺序;同时展示了如何通过运算符重载实现Point类对象的加法操作。
摘要由CSDN通过智能技术生成

函数重载:参数个数、类型,顺序不同,不能仅通过函数返回值重载

运算符重载:

#include <iostream>

using namespace std;
class Point{
public:
    //成员数据
    int   x;
    int   y;
    Point operator +(Point ptmp);

};


 Point Point:: operator +(Point ptmp)
{
    Point p;
    p.x = x + ptmp.x;
    p.y = y + ptmp.y;
    return p;

 }
int main()
{
    cout << "Hello World!" << endl;
    Point p1;
    p1.x = 3;
    p1.y = 4;

    Point p2;
    p2.x = 5;
    p2.y = 6;

    Point p3 = p1 + p2;  //两个对象相加("+")的运算符
    cout << "p3.x=" <<p3.x<< " p3.y=" <<p3.y<<endl;
    return 0;
}

在面向对象编程中,多态性(Polymorphism)是指不同类型的对象能够对同一消息做出不同的响应。它有多种形式,但主要分为两种:静态多态(编译时多态)和动态多态(运行时多态)。 1. **静态多态(函数重载运算符重载)**[^4]: - **函数重载**: 在C++等支持多态的语言中,可以为同一个函数名定义多个版本,每个版本有不同的参数列表。例如,有两个不同的加法函数,一个用于两个整数,另一个用于两个浮点数: ```cpp int add(int a, int b) { return a + b; } double add(double a, double b) { return a + b; } ``` - **运算符重载**: 通过继承`operator`关键字,可以自定义特定运算符的行为。比如,重载`+`运算符来连接两个字符串: ```cpp class String { // ... friend std::string operator+(const String& str1, const String& str2); }; ``` 2. **动态多态(派生类和虚函数实现)**[^5]: - **派生类**:子类可以继承父类并覆盖或扩展其方法。这是通过在基类声明虚函数(`virtual`)来实现的。当调用一个基类指针指向的虚函数时,实际执行的是子类的版本: ```cpp class Base { virtual void display() { cout << "Base" << endl; } }; class Derived : public Base { void display() override { cout << "Derived" << endl; } }; Base* basePtr = new Derived(); basePtr->display(); // 输出 "Derived" ``` - **虚函数**:子类的实例调用虚函数时,会根据实际的对象类型而不是指针类型来确定调用哪个版本的方法。这在运行时实现了多态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值