欢迎访问宙启技术站
智能推送

继承和多态函数的使用

发布时间:2023-06-04 07:41:44

继承和多态函数是面向对象编程中常用的特性,在程序设计中非常重要。继承是一种可以让我们定义一个类基于另一个类进行扩展或修改的机制。而多态函数是指同一方法在不同对象上的表现形式不同。继承和多态的使用不仅可以提高代码的可读性和复用性,还可以简化代码。

继承

继承的主要目的是为了使用基类的代码和数据,在派生类中进行扩展和修改。在C++中,继承通常使用公有继承和私有继承。公有继承会将基类的公有、保护成员一并继承到派生类,而基类的私有成员则不能被继承。私有继承则会将基类的公有、保护和私有成员全部继承到派生类中。此外,C++还支持多重继承,即一个派生类可以继承多个基类。

以下是一个简单的例子:

class Shape {
public:
    void draw() {
        std::cout << "Drawing a shape" << std::endl;
    }
};

class Circle : public Shape {
public:
    void draw() {
        std::cout << "Drawing a circle" << std::endl;
    }
};

在这个例子中,我们定义了一个Shape类,然后从Shape类继承了一个Circle类,并重新定义了draw()函数。在Circle类中,draw()函数覆盖了Shape类中的draw()函数。这样,当我们创建一个Circle对象并调用draw()函数时,程序就会输出“Drawing a circle”。

多态函数

多态函数是指子类可以使用父类的函数,但是可以根据实际需要对该函数进行重写,即重载。

以下是一个示例:

class Animal {
public:
    virtual void speak() {
        std::cout << "Animal speaking" << std::endl;
    }
};

class Cat : public Animal {
public:
    void speak() override {
        std::cout << "Cat meowing" << std::endl;
    }
};

class Dog : public Animal {
public:
    void speak() override {
        std::cout << "Dog barking" << std::endl;
    }
};

在这个示例中,我们定义了一个Animal类,然后从Animal类继承了Cat和Dog类,并覆盖了父类的speak()函数。在Cat类中,speak()函数输出“Cat meowing”;在Dog类中,speak()函数输出“Dog barking”。

现在我们可以创建Cat和Dog的对象,并调用它们的speak()函数:

Animal* cat = new Cat();
Animal* dog = new Dog();
cat->speak();   // 输出 "Cat meowing"
dog->speak();   // 输出 "Dog barking"

在这个示例中,我们通过虚函数实现了多态,使得相同的函数在不同的对象上表现出不同的行为。

总结

继承和多态函数是一些非常重要的概念,在面向对象编程中起着非常重要的作用。继承可以大大减少我们编写的重复代码,提高代码的复用性。而多态则可以让我们在不同的对象上实现相同的行为,简化代码并提高代码的可读性和可维护性。因此,在实际编程时,我们需要深入理解和熟练掌握这两个概念的使用。