好長(zhǎng)一段時(shí)間沒有用C++寫程序了,記錄下C++編程的一些常用的方法,以免再次忘記:
1. 模板類的定義和實(shí)現(xiàn)必須放在同一個(gè)頭文件中

2. unary_function和binary_function是stl提供的一元和二元函數(shù)對(duì)象基類,子類需實(shí)現(xiàn)()操作符,這樣的子類可以用在stl算法函數(shù)中,如sort, partition等。
   一元函數(shù)對(duì)象例子如下:
template <typename T> 
class FilterCriterion : public unary_function<T, bool>
{

public:
    bool operator()(const T& val) const
    {
        return (val.size() > 0);
    };

};

FilterCriterion<MyType> f;
partition(vec.begin(), vec.end(), f); //對(duì)MyType對(duì)象進(jìn)行分類(size必須>0)
   二元函數(shù)對(duì)象例子如下:
template <class T> 
class RankCriterion : public binary_function<T, T, bool>
{
public:
bool operator()(const T& lhs, const T& rhs) const
{
return (lhs.size() > rhs.size());
};
}
RankCriterion<MyType> r;
sort(vec.begin(), vec.begin(), vec.end(), r); // 對(duì)MyType對(duì)象進(jìn)行排序(按size大小排序)
3. C++處理表達(dá)式可以采用先轉(zhuǎn)成逆波蘭表達(dá)式,然后計(jì)算
http://www.cnblogs.com/adamxx/archive/2006/08/30/703267.html

4. Dll導(dǎo)出類或函數(shù)
#ifdef SIMPLEDLL_EXPORT
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT __declspec(dllimport)
#endif

5. const 成員函數(shù)
const 成員函數(shù)獲得的能力:可以操作常量對(duì)象,如GetName函數(shù)定義為string GetName() const; 那么Const A a; a.GetName();是能編譯通過的,若GetName不定義為const,那么上述調(diào)用編譯會(huì)失敗

const成員函數(shù)失去的能力:有得必有失,不能修改類的數(shù)據(jù)成員,不能在函數(shù)中調(diào)用其他非const的函數(shù)