C/C++
Aniao
这个作者很懒,什么都没留下…
展开
-
纯C++的方式来写函数,函数适配器学习心得
曾经如果要写一个函数,希望这个函数能提供各种操作,比如加法,减法,乘法,除法。那么就得这样写 #define PLUS 1#define MULTIPLE 2#define DEVIDE 3#define MINUS 4double operate(double num1, double num2, int operator){ switch(operator原创 2010-05-12 22:53:00 · 804 阅读 · 1 评论 -
一些Tips ,持续更新
1. 类类型转换不能多次转换,除非第二次开始的都是标准转换。 何谓标准转换,就是int到double,而不是类A到类B。 假设有类A,A可以被转换为B A::operator B() const 而B可以转换为int B::operator int() const 现在有一个函数,原型为: void fun(int i);原创 2010-05-12 23:22:00 · 412 阅读 · 0 评论 -
sizeof在C++模板元编程中的妙用
<br />一个简单的例子:<br />int doit(char *s);int main(int argc, char** argv){ cout<<sizeof(doit("test"))<<endl;} <br />执行后会发生什么?由于没有定义doit函数而发生执行错误?NO,事实上程序会正常的输出sizeof(int)。而下面这个例子:<br /> <br />int doit(char *s);int main(int argc, char** argv){原创 2010-10-18 10:49:00 · 962 阅读 · 0 评论 -
模板传参的注意事项
<br />一个大原则,模板类和类是完全不同的类型,所以参数必须匹配:<br />template <class T>struct y{ char c;};template <template<class X> class op1, template<class X> class op2>struct compose{ template <int x> struct return_type { static const int va原创 2010-10-18 11:23:00 · 684 阅读 · 0 评论 -
记录VC中对operator delete[]的一种优化
记得在看《深入剖析STL》的时候,里面提到了一种很有趣的优化技术,即trivial deconstructor,从字面上来理解,其意思是不必要的析构函数。意思就是说其析构函数没有特别的工作。比如class A{ char* cp;public: ~A(){ delete cp; }}class B{ char b; ~B(){ //empty }} 其中,明显类B的析构函数就是一个trivi原创 2010-11-10 17:17:00 · 1025 阅读 · 0 评论