[C++] - private static成員函數

我們知道static成員函數不需要類創建具體的實例就可以調用,它有點類似於namespace將類和方法聯繫在一起。那麼什麼情況下會考慮將一個private的成員函數設置成static呢?

主要考慮兩點:

1.這個方法只能被這個類使用;

2.這個方法獨立於這個類的內部狀態。

在C++中,一個常用的case就是如果一個private方法是具有工具屬性的方法,那就可以考慮設爲static。

在Java中,常用的應用case是在類的構造函數中,有時需要調用一些方法來初始化immutable的成員變量。但是在構造函數中,對象還沒創建完成,沒法調用成員函數。這時就可以調用不依賴類的內部狀態的private static方法來進行一些操作。

e.g.

public class MyClass{
    private final String concatenated;

    public MyClass(String a, String b){
        concatenated = concat(a,b);
    }

    public String getConcatenated(){
       return concatenated;
    }

    /**
    *  Concatenates two Strings as `s1---s2`
    **/
    private static final String concat(String s1, String s2){
        return String.format("%s---%s", s1, s2);
    }
}

參考鏈接:

https://stackoverflow.com/questions/6445927/what-is-the-use-of-private-static-member-functions

https://softwareengineering.stackexchange.com/questions/234412/why-have-private-static-methods

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章