
深度探索C++对象模型
吃着火锅x唱着歌
这个作者很懒,什么都没留下…
展开
-
深度探索C++对象模型 学习笔记 第二章 构造函数语意学
很多抱怨说C++背着程序员做了太多事,如: if (cin) { /* ... */ } 为了让cin能转换为真假值,为cin定义一个类型转换运算符operator int(),就可以完成以上工作了,但以下行为: cin << intVal; 相当于左移一个int。可以用operator void *()取代operator int()来避免这种情况。而将类型转换运算符声明为explicit的也可以避免。 什么时候需要默认构造函数: class Foo { public: int v原创 2020-05-30 23:06:37 · 724 阅读 · 0 评论 -
深度探索C++对象模型 学习笔记 第一章 关于对象
C中想对一个struct对象做某种操作,可以通过一个函数、宏定义、或程序中直接完成。 宏定义: #define Point3d_print(pd) \ printf("(%g, %g, %g)", pd->x, pd->y, pd->z); //%g表示自动选择合适的表示法输出 在C++中,可以通过抽象数据类型ADT(一个class中的成员函数)实现(纯C中struct中不能有函数,但可以通过函数指针实现),也可以通过一个继承体系将操作传给基类函数等实现。还能使用模板参数化原创 2020-05-21 00:21:50 · 303 阅读 · 0 评论