- 博客(7)
- 资源 (2)
- 收藏
- 关注
原创 Effective C++ -- 继承与面向对象设计
32.确定你的public继承塑模出is-a关系public继承意味着is-a的关系(里氏代换原则),适用于基类的每一件事也适用于继承类。 矩形继承正方形问题: - 可实施与矩形的操作无法实施与正方形 - 在编程领域,正方形是一种矩形是错误的 - 在现实领域,正方形是一种矩形是正确的
2015-03-18 17:15:38 4755
原创 Effective C++ -- 设计与声明
18.让接口容易被正确使用问题: 接口的参数 接口依赖其他调用 class Date { public: Date(int month,int day, int year; }以上代码问题: 容易以错误的顺序传递参数 可能传递无效的月份或天数 解决方法: 通过导入新类型获得预防 struct Day { explicit Day(int):val(d){} int val;
2015-03-18 11:05:43 4718
原创 Effective STL -- vector和string
13.vector和string优先于动态分配的数组 使用vector和string和数组相比,减少了管理内存的工作量。可以使用begin,end,size等函数vector和string拥有iterator,value_type等类型定义。注意事项:string可能使用引用计数,在多线程环境下同步可能会导致性能变差。 14.使用reserve来避免不必要的内存分配 vector超过容量
2015-03-17 14:34:36 4783
原创 Effective C++ -- 资源管理
13.以对象管理资源 void f() { Investment* pInv = createInvestment(); ... delete pInv; } 以上代码存在问题:在delete之前出现异常,导致pInv无法删除,造成资源泄露。 解决方法:RAII Resource Acq
2015-03-17 14:24:20 4714
原创 Effective C++ -- 构造析构赋值运算
05.了解C++默默编写并调用哪些函数 编译产生的析构函数时non-virtual,除非这个类的基类析构函数为virtual成员变量中有引用和const成员时,无法自动生成copy assignment函数基类将copy assignment操作符声明为private时,编译器拒绝为其derived classes生成一个copy assignment操作符。 06.若不想使用编译器自动生
2015-03-14 22:29:37 4708
原创 Effective STL -- 容器
01.慎重选择容器类型 选择容器原则:需要考虑元素的排序情况,是否与标准相符,迭代器能力,元素布局,与C的兼容性,查找速度,引用计数,插入删除对事物语义的支持,某些操作是否会使迭代器无效,内存分配策略。 vector 需要使用随机迭代器 容器中布局需要与C兼容 deque 需要使用随机迭代器 当大多数插入在头部和尾部时 在尾部插入不会是迭代器,指针,
2015-03-13 15:27:40 4752
原创 Effective C++ -- 让自己习惯C++
01.视C++为一个语言联邦 CObject-Oriented C++Template C++STL 过程形式(procedural),面向对象形式(object-oriented),函数形式(functional),泛型形式(generic),元编程形式(metaprogramming) 问题: 泛型形式和元编程形式的区别? 过程形式和函数形式的区别? 结论:
2015-03-11 21:38:34 4759
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人