- 通过对象实例调用:在当前类中持有另一个类的对象实例,然后通过该实例调用目标类的成员函数。
- 通过指针或引用调用:在当前类中持有另一个类的指针或引用,然后通过该指针或引用调用目标类的成员函数。
- 继承:如果类之间有继承关系,可以通过继承链调用基类的成员函数。
1、 在当前类中持有另一个类的对象实例,然后通过该实例调用目标类的成员函数。
#include <iostream>
class ClassB {
public:
void memberFunctionB() {
std::cout << "Called ClassB::memberFunctionB" << std::endl;
}
};
class ClassA {
private:
ClassB b; // 持有ClassB的对象实例
public:
void memberFunctionA() {
b.memberFunctionB(); // 通过对象实例调用
}
};
int main() {
ClassA a;
a.memberFunctionA(); // 输出:Called ClassB::memberFunctionB
return 0;
}
2、 在当前类中持有另一个类的指针或引用,然后通过该指针或引用调用目标类的成员函数
#include <iostream>
class ClassB {
public:
void memberFunctionB() {
std::cout << "Called ClassB::memberFunctionB" << std::endl;
}
};
class ClassA {
private:
ClassB* bPtr; // 持有ClassB的指针
public:
ClassA(ClassB* b) : bPtr(b) {}
void memberFunctionA() {
bPtr->memberFunctionB(); // 通过指针调用
}
};
int main() {
ClassB b;
ClassA a(&b);
a.memberFunctionA(); // 输出:Called ClassB::memberFunctionB
return 0;
}
3、如果类之间有继承关系,可以通过继承链调用基类的成员函数
#include <iostream>
class Base {
public:
void baseFunction() {
std::cout << "Called Base::baseFunction" << std::endl;
}
};
class Derived : public Base {
public:
void derivedFunction() {
baseFunction(); // 通过继承链调用基类成员函数
}
};
int main() {
Derived d;
d.derivedFunction(); // 输出:Called Base::baseFunction
return 0;
}