C++ 的关键字 mutable

mutable 是个很有意思的属性。mutable 声明的类成员可以在 const 方法中被修改;const 实例中的 mutable 成员不受 const 的限制。 ...

C++ 的关键字 explicit

如果一个类的构造函数被声明为 explicit ,那以此构造函数进行的隐式类型转换将被阻止。要想进行此种类型转换,必须显式地调用此构造函数。 ...

C++ 的类型转换 之 static_cast

static_cast 一般用来将枚举类型转换成整型,或者整型转换成浮点型。也可以用来将指向父类的指针转换成指向子类的指针。做这些转换前,你必须确定要转换的数据确实是目标类型的数据,因为 static_cast 不做运行时的类型检查以保证转换的安全性。也因此, static_cast 不如 dynamic_cast 安全。对含有二义性的指针, dynamic_cast 会转换失败,而 static_cast 却直接且粗暴地进行转换。这是非常危险的。 ...

删除容器的元素时应谨慎

当一块内存被释放后,指向它的所有指针都成了“野指针”;当容器中的的一个元素被删后,指向那个元素的所有迭代器也都失效了。这两者都是程序员的大敌。对于前者,你已经有了足够的警惕,并且多年来养成了一个对付它的好习惯,就是在释放内存后立即把指向它的指针赋值为 NULL ,并在使用任何指针前都先判空(判断其是否为空指针)。而对于后者,即使经验丰富的猎人也仍然不时地掉入它的陷阱。 ...

C++ 继承关系中构造函数的调用顺序

如果A为基类,B继承自A,C继承自B和A,那么在实例化C时,它们各自的构造函数的调用顺序是什么? ...