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

2. unary_function和binary_function是stl提供的一元和二元函數對象基類,子類需實現()操作符,這樣的子類可以用在stl算法函數中,如sort, partition等。
   一元函數對象例子如下:
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); //對MyType對象進行分類(size必須>0)
   二元函數對象例子如下:
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); // 對MyType對象進行排序(按size大小排序)
3. C++處理表達式可以采用先轉成逆波蘭表達式,然后計算
http://www.cnblogs.com/adamxx/archive/2006/08/30/703267.html

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

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

const成員函數失去的能力:有得必有失,不能修改類的數據成員,不能在函數中調用其他非const的函數