第二幅图里有一句话:客户仍然可以通过该方法返回整型套接字句柄修改类的状态。
这里有几个问题看不懂(#-.-)
第一:结合书上的SocketDisconnect方法不是返回bool型吗?怎么变成返回整型套接字句柄了?
第二:什么是修改类的状态,没听说过啊,各位大仙可以解释下么?而且返回整型套接字句柄怎么修改类的状态啊?
对了还有这样一句话:如果返回指向某个私有成员变量的no-const指针或引用,那也会发生同样内部状态泄露。
也请各位大仙解释一下这句话的意思。
拜托了,真的想不明白,网上也找不到相似的资料。
3 回答
onemoo
TA贡献883条经验 获得超454个赞
你提到的那句话在第一幅图里吧。
对于你的第一问:结合上下文,这句话中的“该方法”指的应该是 GetSocket() 吧。
对于你的第二问:所谓“类的状态”指的就是对象本身具有的那些属性,比如类实例自己的成员变量之类的。
“整型套接字句柄怎么修改类的状态啊?” 显然有其他的方式——比如某些更底层的函数——可以通过套接字句柄来改变套接字的状态。
GetSocket 函数被修饰为 const,这表示设计者并不希望调用这个函数会导致类实例的成员变量(或者说自身的状态)被修改。可是它返回了句柄,可能有其他函数可以通过这一句柄来修改套接字,这就违背了设计者的初衷,所以说这样的设计是糟糕的。
这其实就是最基本的封装细节的面向对象思想。如果你不明白(或者看不懂上面的解释),我觉得你不如再把这些最最基础的面向对象概念好好复习下...... 你提的这个问题表现出你还没有完全理解面向对象的思想,可能也没有学明白 C++。
- 3 回答
- 0 关注
- 1697 浏览
添加回答
举报
0/150
提交
取消