好長(zhǎng)一段時(shí)間沒(méi)有用C++寫(xiě)程序了,記錄下C++編程的一些常用的方法,以免再次忘記:
1. 模板類(lèi)的定義和實(shí)現(xiàn)必須放在同一個(gè)頭文件中
2. unary_function和binary_function是stl提供的一元和二元函數(shù)對(duì)象基類(lèi),子類(lèi)需實(shí)現(xiàn)()操作符,這樣的子類(lèi)可以用在stl算法函數(shù)中,如sort, partition等。3. C++處理表達(dá)式可以采用先轉(zhuǎn)成逆波蘭表達(dá)式,然后計(jì)算
http://www.cnblogs.com/adamxx/archive/2006/08/30/703267.html
4. Dll導(dǎo)出類(lèi)或函數(shù)
5. const 成員函數(shù)
const 成員函數(shù)獲得的能力:可以操作常量對(duì)象,如GetName函數(shù)定義為string GetName() const; 那么Const A a; a.GetName();是能編譯通過(guò)的,若GetName不定義為const,那么上述調(diào)用編譯會(huì)失敗
const成員函數(shù)失去的能力:有得必有失,不能修改類(lèi)的數(shù)據(jù)成員,不能在函數(shù)中調(diào)用其他非const的函數(shù)
1. 模板類(lèi)的定義和實(shí)現(xiàn)必須放在同一個(gè)頭文件中
2. unary_function和binary_function是stl提供的一元和二元函數(shù)對(duì)象基類(lèi),子類(lèi)需實(shí)現(xiàn)()操作符,這樣的子類(lèi)可以用在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)行分類(lèi)(size必須>0)
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)行分類(lèi)(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大小排序)
RankCriterion<MyType> r;
sort(vec.begin(), vec.begin(), vec.end(), r); // 對(duì)MyType對(duì)象進(jìn)行排序(按size大小排序)
http://www.cnblogs.com/adamxx/archive/2006/08/30/703267.html
4. Dll導(dǎo)出類(lèi)或函數(shù)
#ifdef SIMPLEDLL_EXPORT
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT __declspec(dllimport)
#endif
#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();是能編譯通過(guò)的,若GetName不定義為const,那么上述調(diào)用編譯會(huì)失敗
const成員函數(shù)失去的能力:有得必有失,不能修改類(lèi)的數(shù)據(jù)成員,不能在函數(shù)中調(diào)用其他非const的函數(shù)