effective c++讓接口容易被正確使用,不易被誤用

class Month
{
public:
    static Month Jan(){return Month(1);}
    static Month Feb(){return Month(2);}
    //......
private:
    explicit Month(int i):val(i){}
    int val;
};
class Year
{
public:
    explicit Year(int i):val(i){}
private:
    int val;
};
class Day
{
public:
    explicit Day(int i):val(i){}
private:
    int val;
};
class Date
{
public:
    Date(const Month& m,const Day& d,const Year& y){}
    Date(int month,int day,int year){}
};
int main()
{
    Date(2,20,1995);
    //這樣設計可能導致發生潛在的錯誤,
    //比如數字順序搞錯,或者數字打錯
    Date(Month::Jan(),Day(20),Year(1995));
    //這樣接口就設計的更加通俗易懂,而不易犯錯
}

提供行爲一致的接口,就像stl容器的接口十分一致,每個容器都有一個名爲size的成員函數
shared_ptr可以消除潛在的客戶錯誤,cross-DLL problem,這個問題發生於對象在dll中被new創建,卻在另一個dll內被delete銷燬,這會導致運行時錯誤
這個現在還不是特別理解,也沒有查到,以後等查到再做細節補充

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