C++ 多个类调用同一个类
时间: 2024-08-15 09:10:01 浏览: 28
在C++中,如果多个类需要共享对同一个类的依赖或功能,通常不会让它们直接互相调用这个类,而是通过继承、接口或者是通过指针或引用间接访问。这种设计可以避免类间的紧密耦合,并保持良好的模块化。
例如:
1. **继承**:若A类和B类都需要使用C类的功能,可以直接让A类和B类都从C类派生。这样,每个子类都有了对C类实例的访问权限,但并不强制他们直接相互调用。
```cpp
class C {
public:
void someFunction();
};
class A : public C {
//...
};
class B : public C {
//...
};
```
2. **接口/抽象类**:通过接口或抽象类的设计,可以让A类和B类都实现相同的接口,间接地调用共同的行为。C类作为一个接口或抽象基类,A类和B类都是其实现者。
```cpp
class ICommon {
public:
virtual void commonFunction() = 0;
};
class C : public ICommon {
public:
void commonFunction() override {
// 具体实现
}
};
class A : public C {
//...
};
class B : public C {
//...
};
```
3. **指针或引用**:A类和B类各自持有C类的对象指针或引用,这样它们可以在各自的上下文中使用C类的成员。
```cpp
class A {
private:
C* cPtr;
public:
void doSomething() {
cPtr->someFunction();
}
};
class B {
private:
C& cRef;
public:
void anotherAction() {
cRef.someFunction();
}
};
```