C++多态性(polymorphism)

  1. 多态性是指通过相同的接口来访问不同的实现。在C++中,多态性通常通过虚函数来实现。

例如:

class Shape {
public:
    virtual void draw() { // 声明为虚函数
        cout << "Drawing a shape." << endl;
    }
};

class Circle : public Shape {
public:
    void draw() override { // 重写draw函数
        cout << "Drawing a circle." << endl;
    }
};

int main() {
    Shape* s = new Circle(); // 通过Shape指针调用Circle对象
    s->draw(); // 执行Circle的draw函数
    delete s; // 释放内存
    return 0;
}

在这个示例中,我们使用虚函数实现了多态性。从Shape派生出了一个Circle类,并且在Circle类中重新定义了draw函数。然后,我们通过Shape指针来调用Circle对象,这样就可以执行Circle中的draw函数了。

  1. 在多态性中,基类的指针可以指向派生类的对象。这种技术称为“向上转型”(upcasting)。

例如:

class Animal {
public:
    virtual void makeSound() {
        cout << "Animal is making a sound." << endl;
    }
};

class Dog : public Animal {
public:
    void makeSound() override {
        cout << "Dog is barking." << endl;
    }
};

int main() {
    Animal* animal = new Dog(); // 向上转型
    animal->makeSound(); // 执行Dog的makeSound函数
    delete animal; // 释放内存
    return 0;
}

在这个示例中,我们定义了一个Animal基类和一个Dog派生类,并且在Dog类中重新定义了makeSound函数。然后,我们通过向上转型将Dog对象转换为Animal的指针,这样就可以调用Dog中的makeSound函数了。

  1. 纯虚函数是一种特殊的虚函数,它没有实现,在派生类中必须被重载。纯虚函数用“=0”表示。

例如:

class Shape {
public:
    virtual void draw() = 0; // 声明为纯虚函数
};

class Circle : public Shape {
public:
    void draw() override { // 实现draw函数
        cout << "Drawing a circle." << endl;
    }
};

int main() {
    Shape* s = new Circle();
    s->draw(); // 执行Circle的draw函数
    delete s; // 释放内存
    return 0;
}

在这个示例中,我们定义了一个Shape基类,其中包含一个纯虚函数draw。然后,我们从Shape派生出了一个Circle类,并且在Circle类中实现了draw函数。

希望这些知识点能够帮助你更好地学习C++多态性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值