在同一个类中定义的这两个函数如何在不进行前向声明的情况下彼此调用?

精神之旅

目前,我正在学习使用boost / asio进行编码。许多代码示例都使用async_accept和bind的组合。在服务器代码中,我遇到了类似这样的事情:

class Tcp_server
{
public:
    Tcp_server()
    {

    }
    void start_accept(int a)
    {
        if(a>0)
        {
            cout<<a<<endl;
            handle_accept(a-1);
        }

    }

    void handle_accept(int a)
    {
        if(a>0)
        {
            cout<<a<<endl;
            start_accept(a-1);
        }

    }
};

如果我创建一个Tcp_server实例并调用handle_accept或开始接受,它将起作用。但是,如果我放弃Tcp_server类封装,则编译器将抱怨“未声明handle_accept”。我只是想知道编译器是否自动转发声明在同一类中定义的所有函数。谁能解释为什么?

迪特玛·库尔(DietmarKühl)

类定义中定义的函数的语义与仅在类定义中声明然后在类定义之后立即定义的语义完全相同。唯一的区别是此类成员函数是隐式声明为内联的,而函数定义是非内联的或显式内联的。也就是说,从编译器的角度来看,在考虑函数定义之前先声明函数并定义类。

在类定义之后定义函数的原因很简单:如果不这样做,则类将是不完整的,并且成员查找将失败,这显然是成员函数定义所不希望的。副作用是,功能很容易相互引用。由于在类定义中定义成员函数主要是为了方便起见,因此要求为以后使用的成员函数声明也有些不便。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在顺序很重要的情况下,在Mockito中验证同一个方法的两个调用,中间验证另一个方法

来自分类Dev

如何在同一个类中创建两个不同的构造函数 - Android

来自分类Dev

在同一个编译单元中声明两个类

来自分类Dev

如何组合两个在同一个类名上触发的函数?

来自分类Dev

同一个类中的两个函数不能互相访问

来自分类Dev

如何在同一个端点中模拟两个axios调用

来自分类Dev

如何在没有调用对象的情况下使用在另一个类中定义的方法?

来自分类Dev

如何在同一个jQuery函数中使用两个追加?

来自分类Dev

如何将两个类成员函数与同一个类中的另一个函数相加?

来自分类Dev

无法在同一个类中调用函数

来自分类Dev

在 Opaleye 中,如何在同一个查询中插入两个表?

来自分类Dev

如何在同一个tabAdapter中传递两个不同的ID?

来自分类Dev

如何在角度8的同一个div中打开两个模态?

来自分类Dev

如何在android的同一个活动中实现两个按钮?

来自分类Dev

如何在同一个类的另一个方法中调用一个方法?

来自分类Dev

我可以在其他两个函数中调用同一个函数吗?

来自分类Dev

如何在不知道类的情况下从另一个 dll 调用类的函数?

来自分类Dev

在同一个组件中进行两个 API 调用 - reactjs

来自分类Dev

如何在不使用数组的情况下比较这两个字符串并删除一个公共字母?

来自分类Dev

JavaScript:如何从一个函数返回两个值并在另一个函数中调用这两个变量?

来自分类Dev

GetWindowText如何在不进行系统调用来读取该进程的内存的情况下获取另一个进程拥有的窗口的名称?

来自分类Dev

如何在不使用for循环的情况下向量化这两个numpy操作?

来自分类Dev

如何在同一个类中调用接口方法?

来自分类Dev

如何在不使用struct的情况下在一个函数中返回两个值?

来自分类Dev

为什么这两个路由器不能在同一个网络中工作?

来自分类Dev

如何在有约束的情况下彼此添加两个视图

来自分类Dev

如何在有约束的情况下彼此添加两个视图

来自分类Dev

如何在同一个2D数组中使用两个构造函数?爪哇

来自分类Dev

在laravel中如何在没有where条件的情况下获取同一个数组中的连接表数据

Related 相关文章

  1. 1

    在顺序很重要的情况下,在Mockito中验证同一个方法的两个调用,中间验证另一个方法

  2. 2

    如何在同一个类中创建两个不同的构造函数 - Android

  3. 3

    在同一个编译单元中声明两个类

  4. 4

    如何组合两个在同一个类名上触发的函数?

  5. 5

    同一个类中的两个函数不能互相访问

  6. 6

    如何在同一个端点中模拟两个axios调用

  7. 7

    如何在没有调用对象的情况下使用在另一个类中定义的方法?

  8. 8

    如何在同一个jQuery函数中使用两个追加?

  9. 9

    如何将两个类成员函数与同一个类中的另一个函数相加?

  10. 10

    无法在同一个类中调用函数

  11. 11

    在 Opaleye 中,如何在同一个查询中插入两个表?

  12. 12

    如何在同一个tabAdapter中传递两个不同的ID?

  13. 13

    如何在角度8的同一个div中打开两个模态?

  14. 14

    如何在android的同一个活动中实现两个按钮?

  15. 15

    如何在同一个类的另一个方法中调用一个方法?

  16. 16

    我可以在其他两个函数中调用同一个函数吗?

  17. 17

    如何在不知道类的情况下从另一个 dll 调用类的函数?

  18. 18

    在同一个组件中进行两个 API 调用 - reactjs

  19. 19

    如何在不使用数组的情况下比较这两个字符串并删除一个公共字母?

  20. 20

    JavaScript:如何从一个函数返回两个值并在另一个函数中调用这两个变量?

  21. 21

    GetWindowText如何在不进行系统调用来读取该进程的内存的情况下获取另一个进程拥有的窗口的名称?

  22. 22

    如何在不使用for循环的情况下向量化这两个numpy操作?

  23. 23

    如何在同一个类中调用接口方法?

  24. 24

    如何在不使用struct的情况下在一个函数中返回两个值?

  25. 25

    为什么这两个路由器不能在同一个网络中工作?

  26. 26

    如何在有约束的情况下彼此添加两个视图

  27. 27

    如何在有约束的情况下彼此添加两个视图

  28. 28

    如何在同一个2D数组中使用两个构造函数?爪哇

  29. 29

    在laravel中如何在没有where条件的情况下获取同一个数组中的连接表数据

热门标签

归档