为啥到处都使用套接字指针而不是套接字实例?
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 而失败?