Effective C++ 条款27的例子:用static_cast<*this>()表明类型转换的隐含问题。
转换之后操作的并非原有对象,而是一个副本,是一个临时变量,无法取地址,右值。
code:对象son,子类的虚函数中,强制转化this为父类,并调用父类的虚函数,发现并未修改该子类对象的父类部分的成员变量的值,
#include <iostream>
using namespace std;
class Father {
public:
    Father(int value):a(value){}
    virtual void blink(int value)
    {
        a = value;
    }
    int getA()
    {
        return a;
    }
private:
    int a;
};
class Son:public Father
{
public:
    Son(int value):Father(value), b(value){}
    virtual void blink(int value)
    {
       // Father::blink(value);
        static_cast<Father>(*this).blink(value);
        b = value;
    }
    int getB()
    {
        return b;
    }
private:
    int b;
};
int main()
{
    Son son(1);
    cout<<son.getA()<<"  "<<son.getB()<<endl;
    son.blink(2);
    cout<<son.getA()<<"  "<<son.getB()<<endl;
    return 0;
}
输出:

原文:http://my.oschina.net/u/2368952/blog/530821