为了账号安全,请及时绑定邮箱和手机立即绑定

关于C++API知识的一些提问。

关于C++API知识的一些提问。

生生不息的他 2018-10-29 20:36:15
第二幅图里有一句话:客户仍然可以通过该方法返回整型套接字句柄修改类的状态。 这里有几个问题看不懂(#-.-) 第一:结合书上的SocketDisconnect方法不是返回bool型吗?怎么变成返回整型套接字句柄了? 第二:什么是修改类的状态,没听说过啊,各位大仙可以解释下么?而且返回整型套接字句柄怎么修改类的状态啊? 对了还有这样一句话:如果返回指向某个私有成员变量的no-const指针或引用,那也会发生同样内部状态泄露。 也请各位大仙解释一下这句话的意思。 拜托了,真的想不明白,网上也找不到相似的资料。
查看完整描述

3 回答

?
onemoo

TA贡献883条经验 获得超454个赞

你提到的那句话在第一幅图里吧。


对于你的第一问:结合上下文,这句话中的“该方法”指的应该是 GetSocket() 吧。


对于你的第二问:所谓“类的状态”指的就是对象本身具有的那些属性,比如类实例自己的成员变量之类的。

“整型套接字句柄怎么修改类的状态啊?”  显然有其他的方式——比如某些更底层的函数——可以通过套接字句柄来改变套接字的状态。

GetSocket 函数被修饰为 const,这表示设计者并不希望调用这个函数会导致类实例的成员变量(或者说自身的状态)被修改。可是它返回了句柄,可能有其他函数可以通过这一句柄来修改套接字,这就违背了设计者的初衷,所以说这样的设计是糟糕的。


这其实就是最基本的封装细节的面向对象思想。如果你不明白(或者看不懂上面的解释),我觉得你不如再把这些最最基础的面向对象概念好好复习下......    你提的这个问题表现出你还没有完全理解面向对象的思想,可能也没有学明白 C++。

查看完整回答
反对 回复 2018-10-29
?
生生不息的他

TA贡献1条经验 获得超0个赞

图片的顺序放错了,所以问题是:第一幅图里有一句话:客户仍然可以通过该方法返回整型套接字句柄修改类的状态……

查看完整回答
反对 回复 2018-10-29
  • 3 回答
  • 0 关注
  • 1648 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信