好长一段时间没有用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的函数