251
技術社區[雲棲]
C++編程規範之44:優先編寫非成員非友元函數
摘要:
要避免交成員費:盡可能將函數指定為非成員非友元函數。
非成員非友元函數通過盡量減少依賴提高了封裝性:函數體不能依賴於類的非公用成員。它們還能夠分離巨類,釋放可分離的功能,進一步減少耦合。它們能夠提高通用性,因為在不知道一個操作是否為某個給定類型的成員的情況下,很難編寫模版。
使用下麵的方法確定函數是否應該是成員和友元:
//如果別無選擇,就無需選擇了;如果必需,就指定為成員;
If函數是操作符 =,->,或者()之一,則必須是成員:
將其製定為成員
//如果可能是非成員非友元函數,或者設為非成員非友元函數有好處,那就照辦
Else if :
a)函數需要與其做參數不同的類型(例如操作符>>或者<<)
b)需要對其最左參數進行強製轉換
c)能夠用類的公用接口單獨實現
將其指定為非成員函數(如果情況a和情況b需要,可以將其指定為非成員友元函數)
如果需要虛擬行為:
添加虛擬成員函數以提供虛擬行為,並通過它實現非成員函數。
Else:
將其製定為成員函數
最後更新:2017-04-03 12:55:09