全局函数如何调用派生类的函数
时间: 2023-12-29 20:02:40 浏览: 74
MFC中定义全局变量和全局函数的方法
在C++中,全局函数是无法直接调用派生类的函数的,因为全局函数不属于任何类,无法访问类的成员。
但是,我们可以通过传递派生类对象的引用或指针给全局函数,然后在全局函数中通过基类指针或引用来调用派生类的函数。具体实现方法如下:
```C++
class Base {
public:
virtual void func() {
cout << "Base func()" << endl;
}
};
class Derived : public Base {
public:
void func() {
cout << "Derived func()" << endl;
}
};
void globalFunc(Base& obj) {
obj.func();
}
int main() {
Derived d;
globalFunc(d); // 输出 Derived func()
return 0;
}
```
在上面的示例中,我们定义了Base和Derived两个类,其中Base类中有一个虚函数func(),Derived类中重写了这个函数。然后我们定义了一个全局函数globalFunc(),该函数接受一个Base类型的引用参数,然后在函数内部通过基类引用来调用派生类的函数。在main函数中,我们创建了一个Derived对象d,并将其传递给globalFunc()函数,从而调用Derived中的函数。
需要注意的是,如果传递的是指针参数,那么在globalFunc()函数中需要使用箭头操作符来访问派生类的成员函数。
总的来说,通过将派生类对象的引用或指针传递给全局函数,并在全局函数中使用基类引用或指针来调用派生类的函数,可以实现全局函数调用派生类函数的功能。
阅读全文