#include "stdafx.h"
#include<iostream>
using namespace std;
class Base
{
public:
virtual void print()
{
cout<<"Base"<<endl;
}
getstr()
{
// ptr=this;
print();
}
// Base *ptr;
};
class Extend:public Base
{
public:
void print()
{
cout<<"Extend"<<endl;
}
};
int main(int argc, char* argv[])
{
Extend e;
e.getstr();
return 0;
}
1.派生类基类成员的this指针,是指向派生类对象的this指针,而不是指向基类对象的指针。所以e.getstr()最后输出的是“Extend”;
2.但是基类中的构造函数和析构函数中的this比较特殊,他们在基类的构造和析构过程中编译器将其基类的this指针,然而它们实际上仍然是指向派生类的this指针,所以在构造函数中用this指针给其他指针变量赋值实际上是派生类对象的this指针。