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

onemoo
TA貢獻883條經驗 獲得超454個贊
你提到的那句話在第一幅圖里吧。
對于你的第一問:結合上下文,這句話中的“該方法”指的應該是 GetSocket() 吧。
對于你的第二問:所謂“類的狀態”指的就是對象本身具有的那些屬性,比如類實例自己的成員變量之類的。
“整型套接字句柄怎么修改類的狀態?。俊? 顯然有其他的方式——比如某些更底層的函數——可以通過套接字句柄來改變套接字的狀態。
GetSocket 函數被修飾為 const,這表示設計者并不希望調用這個函數會導致類實例的成員變量(或者說自身的狀態)被修改??墒撬祷亓司浔?,可能有其他函數可以通過這一句柄來修改套接字,這就違背了設計者的初衷,所以說這樣的設計是糟糕的。
這其實就是最基本的封裝細節的面向對象思想。如果你不明白(或者看不懂上面的解釋),我覺得你不如再把這些最最基礎的面向對象概念好好復習下......? ? 你提的這個問題表現出你還沒有完全理解面向對象的思想,可能也沒有學明白 C++。
- 3 回答
- 0 關注
- 1754 瀏覽
添加回答
舉報
0/150
提交
取消