C++
uestc_chenmo
这个作者很懒,什么都没留下…
展开
-
C++进阶系列:new与Plain Old Data
《深度探索c++对象模型》 P196 Point* heap = new Point; 通常理解的new一个对象进行3个步骤: 1.分配一块内存空间 2.调用对象构造函数 3.指定 指向该对象的指针书中有说到:“再一次容我强调,并没有default constructor施行于 new 运算符所传回的Point Object身上。”当一个类无需构造的时候,如:class Fo...原创 2018-05-21 20:50:40 · 941 阅读 · 0 评论 -
C++进阶系列:深拷贝浅拷贝函数与拷贝赋值操作符
类使用构造函数对对象进行初始化外,还有拷贝、赋值、销毁等操作。 如果在类的定义中不自己定义默认拷贝赋值构造函数与析构函数,编译器会自动创建合成函数,在初始化时使用类内初始值或默认值初始化成员。 编译器自动生成提供的默认拷贝构造函数是浅拷贝,所谓浅拷贝,则是简单将成员进行赋值操作,通常如果类成员只有简单数据成员时,浅拷贝不会出现任何问题。但是,如果成员中存在指针或引用时,执行浅拷贝则只是将指针或...原创 2018-03-09 14:27:46 · 563 阅读 · 0 评论 -
C++进阶系列:C++模板特化与偏特化
《STL源码剖析》第三章讲迭代器时有讲模板特化相关。C++模板包含类模板与模板函数:template <class T>class Template_Class{ //成员函数等 T Data;}; //类模板 template <class T>T Template_func(const T a, const T b){...原创 2018-05-22 21:44:09 · 264 阅读 · 0 评论 -
C++进阶系列:拷贝构造函数与NRV优化
《深度探索C++对象模型》第二章67页有: 这个程序的第一个版本不能实施NRV优化,因为test class 缺少一个copy constructor. 也就是缺少拷贝构造函数所以不能NRV优化。NRV优化和拷贝构造函数是有关系的,只有定义了拷贝构造函数才会开启NRV优化,但现代编译器NRV优化的开启一般都与拷贝构造函数没有关系,早期的 cfront需要一个开关来决定是否应该对代码实行...原创 2018-05-16 20:43:19 · 855 阅读 · 3 评论 -
C++进阶系列:参数推导、内嵌类型、迭代器与traits
《STL源码剖析》学习记录:模板编程中经常写到:template&amp;lt;typename T&amp;gt;void func0(T a){ T aa; //do_sth(); return;}template&amp;lt;typename T&amp;gt;T func1(){ T tmp; //do_sth(); return tmp;}当模...原创 2018-05-24 21:26:43 · 427 阅读 · 0 评论 -
不务正业系列:看STL中迭代器与traits时突然想到decltype
看《STL源码剖析》中讲到迭代器与traits时做了下笔记。 详见:https://blog.csdn.net/uestc_chenmo/article/details/80444092 做笔记过程中突然想到,参数类型和返回值类型问题似乎很贴近auto和decltype。 编译器会在编译时通过变量的初始值或表达式自动推导变量的类型。具体网上资料很多此不赘述。 STL出现较早,其中的trai...原创 2018-05-24 22:03:08 · 592 阅读 · 3 评论 -
C++应用系列:利用装饰器模式进行运行时间测试
在平常做实验时,经常会遇到需要测试某个函数或个模块的运行时长,基本上每次都是在模块前后添加测时间的函数,然后输出查看,这样的工作相当繁琐,然而每次测试还是这样做的。今天上网看到AOP相关,发现可以用AOP添加测时间功能。 又看到了代理模式和装饰器模式,发现应用装饰器模式似乎可以简单实现。class VBase{public: virtual ~VBase(){} ...原创 2018-07-05 13:02:56 · 525 阅读 · 0 评论 -
C++应用系列:仿AOP与匿名对象实现运行时间测试
之前通过装饰器模式实现了打印运行时间,使用起来稍微方便一些了,但是每次测试时还需要创建一个新的时间测试类继承于基类,并在该类成员函数中调用实际需要测时间的函数。 在看AOP时发现还有另一种实现方式:template <class T>class BaseAspect{ T* m_ptr;protected: BaseAspect(T* ptr):m_ptr(...原创 2018-07-05 16:32:10 · 259 阅读 · 0 评论 -
C++应用系列:STL中sort函数与自定义cmp比较排序
平常使用时,在写sort函数的比较函数时,通常都是:bool cmp(int i1,int i2){ return i1 < i2;}void foo(){ sort(vec.begin(),vec.end(),cmp);}习惯用法后,在一些类中,同样这样写就出现了错误。class InClass{bool cmp(int i1,int i2){...原创 2018-08-07 22:07:29 · 4012 阅读 · 0 评论