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