为啥到处都使用套接字指针而不是套接字实例?

Posted

技术标签:

【中文标题】为啥到处都使用套接字指针而不是套接字实例?【英文标题】:Why socket pointers are used everywhere instead of socket instances?为什么到处都使用套接字指针而不是套接字实例? 【发布时间】:2020-03-04 07:37:34 【问题描述】:

我是 C++/QT 编程新手,找不到答案。 我看到了很多示例/问题/对话,几乎所有人们都使用 tcp 套接字指针。 如果出现问题,用户关闭套接字,删除它并创建另一个。

为什么不直接使用套接字实例,关闭它,配置并尝试使用新参数再次连接它?每次使用指针并重新创建套接字是否会带来一些不明显的好处?

【问题讨论】:

Qt 类有时具有相当深的继承层次,具有许多虚函数和多态性。要使多态性起作用,您需要指针或引用。由于 C++ 没有“空值”,因此使用指针更容易,因为空指针可用于指示某种故障。 【参考方案1】:

我认为在使用 Qt 类时使用指针而不是实例的最重要原因是Qt Ownership。它可以帮助您进行内存管理,并且需要在堆中创建对象。

【讨论】:

以上是关于为啥到处都使用套接字指针而不是套接字实例?的主要内容,如果未能解决你的问题,请参考以下文章

套接字:为啥阻塞 read() 会因 ENOTCONN 而失败?

TypeError:需要一个类似字节的对象,而不是“str”套接字编程

getline() 带有文件描述符而不是文件指针

套接字使用线程而不是 select()

为啥套接字不设置为非阻塞模式?

为啥我们需要网络套接字?