Chinaunix首页 | 论坛 | 博客
  • 博客访问: 300185
  • 博文数量: 148
  • 博客积分: 4365
  • 博客等级: 上校
  • 技术积分: 1566
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-05 21:38
文章分类
文章存档

2014年(2)

2013年(45)

2012年(18)

2011年(1)

2009年(54)

2008年(28)

我的朋友

发布时间:2012-12-21 12:24:56

root的基类一定要将析构函数声明为 virtual,防止产生内存泄露。......【阅读全文】

阅读(258) | 评论(0) | 转发(0)

发布时间:2012-12-21 12:20:52

上个item提到了编译器会默认合成一些copy control函数和运算符,如果不想对外提供这些功能时,可以把这些声明为private,或者搞一个这些全为private的基类,再派生。再次强调:编译器合成出来的全是public成员。......【阅读全文】

阅读(236) | 评论(0) | 转发(0)

发布时间:2012-12-19 11:00:02

编译器会自动为类 generate/synthesize出:default构造函数,析构函数,赋值运算符,拷贝构造函数。要结合后面几个item综合来看。......【阅读全文】

阅读(312) | 评论(0) | 转发(0)

发布时间:2012-12-19 10:37:43

C++中对于对象初始化有着严格的顺序,先基类再派生类。确保变量/对象作为右值使用前已经完成初始化(initialized),否则会导致杯具。在构造函数中使用冒号初始化列表优于在函数体中赋值。当涉及到静态变量时,不同编译单元(translation unit,通常理解为文件)中的初始化顺序并无明确保障。当存在一个文件中的静态变量需要用另外文件中的静态变量赋值时,如何保障后者已先被初始化,这时考虑将后者变为 local static 变量,想象C++中的单例模式。class FileSystem { ... };       &......【阅读全文】

阅读(312) | 评论(0) | 转发(0)

发布时间:2012-12-12 21:49:07

常成员函数可以和非常成员函数之间进行重载。对于迭代器需要注意的是:const std::vector<int>::iterator iter,这样的iter,可以改变其*iter,但是不能iter++等操作。只读意义上的应该用 std::vector<int>::const_iterator citer,即*iter是不可改变的。有的时候加上一个const,能避免一些意外的异常,比如const Rational operator*(const Rational& lhs, const Rational& rhs);这里如果不加const,如果手误 if ......【阅读全文】

阅读(254) | 评论(0) | 转发(0)
给主人留下些什么吧!~~
留言热议
请登录后留言。

登录 注册