2016 四月 | 重归混沌的BLOG

C++默认构造函数

在C++中,如果不为某个struct/class实现一个构造函数,那么编译器就会自动为这个类添加一个默认构造函数,而这个默认构造函数什么也不干。 但是我却从来不知道,默认构造函数在不同的情况下,会出现不一样的效果(当然这是C++03之后的标准). 先看一段代码: struct test { int a; int b; }; void *operator new(size_t sz) { void *p = malloc(sz); for (size_t i = 0; i < sz; i++) ((char *)p)[i] = 0x01; return p; } int main() { struct test *t1……

迭代器模式

在写C++代码时,首先接触的就是迭代器。甚至于设计模式都有一种模式叫迭代器模式。虽说网上到处都说迭代器用于隐藏数据结构的细节,但我却一直没有真正搞明白为什么需要迭代器去隐藏数据结构细节。 在写C++代码时,一般我每用一个数据结构都会去查一下,他大致是如何实现的(不然用起来不太放心:D)。 因此一般情况下我在c++下都是使用类似类似for(size_t i = 0; i < vector.size(); i++)的方式去遍历vector的每个元素。 直到最近的一次重构我才大概明白什么时候去使用迭代器模式……