閱讀251 返回首頁    go 技術社區[雲棲]


C++編程規範之44:優先編寫非成員非友元函數

摘要:

要避免交成員費:盡可能將函數指定為非成員非友元函數。

非成員非友元函數通過盡量減少依賴提高了封裝性:函數體不能依賴於類的非公用成員。它們還能夠分離巨類,釋放可分離的功能,進一步減少耦合。它們能夠提高通用性,因為在不知道一個操作是否為某個給定類型的成員的情況下,很難編寫模版。

使用下麵的方法確定函數是否應該是成員和友元:

//如果別無選擇,就無需選擇了;如果必需,就指定為成員;

If函數是操作符 =,->,或者()之一,則必須是成員:

將其製定為成員

//如果可能是非成員非友元函數,或者設為非成員非友元函數有好處,那就照辦

Else if :

a)函數需要與其做參數不同的類型(例如操作符>>或者<<)

    b)需要對其最左參數進行強製轉換

c)能夠用類的公用接口單獨實現

將其指定為非成員函數(如果情況a和情況b需要,可以將其指定為非成員友元函數)

如果需要虛擬行為:

    添加虛擬成員函數以提供虛擬行為,並通過它實現非成員函數。

Else:

    將其製定為成員函數


最後更新:2017-04-03 12:55:09

  上一篇:go android頂部導航條
  下一篇:go 仿網易新聞頁麵效果