c++ - 只调用其他类成员的类成员?

标签 c++

给出:

#include <stdio.h>

class A
{
  friend class B;
 private:
  void func();
} GlobalA;

void A::func()
{
  printf("A::func()");
}

class B
{
 public:
  void func();
};

void B::func()
{
  GlobalA.func();
}

int main()
{
  B b;
  b.func();
  getchar();
}

所以实际上所有 B::func() 所做的就是调用 A::func(),有没有更好的方法来做到这一点?还是编译器在编译时直接调用 A::func()

约束条件: class A 创建线程并被多个其他类使用。它是一个用于管理套接字/管道的全局 IO 类,因此我认为任何类型的继承都不会顺利进行。

注意:如果这是一个可用 google 的问题,请告诉我,因为我没有搜索什么。

最佳答案

事实上 B.func() 做了一些更微妙的事情:

它不调用 A::func 而是调用 GlobalA.func() ,GlobalA 是类 A 的一个实例。

所以这里的 GlobalA 是一个单例(但以非常“原始”的方式表示为单个全局实例)

因此,无论您创建多少个 B 实例,它们都将始终调用同一个 A 实例 (GlobalA)。

关于c++ - 只调用其他类成员的类成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12565410/

相关文章:

c++ - Qt:我应该什么时候使用 Q_DECLARE_METATYPE?

c++ - 在 Windows 上从 C++ 调用 R 函数

c++ - 返回类型取决于模板参数

c++ - C++ 中类似 Java 的 lastIndexOf

c++ - 如果 ssl::stream<tcp::socket> 有未决操作,我是否不允许删除它?

c++ - 使用运算符重载打印链表

c++ - 智能指针的类,它指向哪里?

c++ - include 语句的顺序在链接步骤中有何影响?

c++ - 文件挂载在哪里?

c++ - 如何使用 Windows native Wifi 功能连接到请求网络安全 key 的 Wifi?