[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

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