基类指针调用派生类函数
基类指针调用派生类函数是面向对象编程中的一种常见操作。在C++中,基类指针可以指向派生类对象,通过这个指针可以访问基类的成员函数,但是无法访问派生类新增的成员函数。为了能够调用派生类的函数,需要使用虚函数的概念来实现多态性。
多态性是面向对象编程的核心概念之一,它允许使用基类的指针或引用来调用派生类的函数,从而实现不同对象的共享接口。在C++中,通过在基类中声明虚函数,并在派生类中重写这个虚函数,来实现多态性。
下面通过一个例子来说明基类指针调用派生类函数的用法:
```cpp
#include <iostream>
class Base
public:
virtual void fun
std::cout << "Base::func( called" << std::endl;
}
};
class Derived : public Base
public:
void fun
std::cout << "Derived::func( called" << std::endl;
}
};
int mai
指向类成员函数的指针
Base* ptr = new Derived(;
ptr->func(; // 调用Derived::func
delete ptr;
return 0;
```
在这个例子中,`Base`是基类,`Derived`是派生类,`Derived`继承自`Base`。`Base`中声明了一个虚函数`func(`,并在`Derived`中重写了这个函数。
在`main`函数中,首先创建了一个`Derived`对象,并将其地址赋给了一个`Base`类型的指针`ptr`。然后通过`ptr->func(`调用了`Derived`的`func`函数。由于`func`函数是虚函数,编译器会根据实际对象的类型来决定调用哪个函数。因此,实际上调用的是`Derived`类中重写的`func`函数,输出的结果是`Derived::func( called`。
这种通过基类指针调用派生类函数的方式,可以方便地实现多态性,增加代码的灵活性和可
扩展性。通过将不同类型的对象存储在统一的容器中,可以对它们进行统一的处理。这在实际的软件开发中非常有用,可以提高代码的可复用性和维护性。
需要注意的是,在使用基类指针调用派生类函数时,基类中的函数必须是虚函数,并且在派生类中对这个虚函数进行重写。在派生类中重写虚函数时,可以使用`override`关键字来提醒编译器进行检查,确保正确地重写了基类中的虚函数。
另外,当使用基类指针调用派生类函数时,如果基类中没有声明虚函数,或者派生类中没有重写基类中的虚函数,默认情况下会调用基类中的函数。这是因为在编译时编译器无法确定调用的是哪个函数,只能根据指针的类型来确定调用哪个函数。如果想要调用派生类中重写的虚函数,必须将基类中的函数声明为虚函数。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论