读C++ Common Knowledge(四)
sshong 发表于2007年12月8日 14:15:00 更新于2008年3月21日 19:18:00
9.新型强制转换操作符(new cast operators)
const_cast:对一个表达式添加或者移去const类型
static_cast:用于将一个基类型的指针或者引用转换为子类的指针或引用。
reinterpret_cast:与static_cast在强制转基类指针到子类指针时的区别是--reinterpret只是假装基类指针是一个子类指针而不改变它的值二static_cast则会执行正确的地址操作。
dynamic_cast:典型的特别的应用于安全的向下类型转化(基类指针转到子类指针)。它仅仅在多态类才会起作用,也就是基类必须有虚函数,并且这种强制转换会在运行期间监测这种转换是否正确(淡然这种安全机制需要一定消耗)。
10.常成员函数的意义(meaning of a const member function)
this指针在非常成员函数中的类型是X* const(X是类名,const ptr)
this指针在常成员函数中的类型是const X* const(const ptr to const obj),因为this指向的对象是常量,所以this指向的对象不能被修改。
如果想在常成员函数中修改成员变量有两种解决方法:
方法一、常成员函数内强制转换this指针
X* const athis = const_cast<X* const>(this);
athis->somemember=...;
方法二、将可以在常成员函数中修改的成员变量生命为 mutable类型
class X
{
private:
  mutable int valueA;
public:
int getValue() const
{
  valueA++;
  return valueA;
}
};
标签:无分类:C++阅读:3532
评论
暂无评论
添加评论
您的大名,限长10汉字,20英文(*)
电子信箱(*)
您的网站
正文,限长500汉字,1000英文(*)
验证码(*) 单击刷新验证码
联系我
博客订阅