您的位置:首页 > 编程语言 > C语言/C++

C++中的this

2016-03-26 14:59 447 查看
1、父类中的this不一定是指向父类对象,也可能指向的是子类对象。

2、当父类初始化自己的对象时,其中的this是指父类对象本身。

3、当子类继承父类时,子类初始化自己的对象,会调用父类的构造函数,此时父类构造函数的this指的是子类对象,而不是父类对象。下面的代码可以说明一切。

#include <iostream>

class AA
{
public:
int a ;
static AA *pA ;
public:
AA(int a )
{
this->a = a;

pA = this;//当子类对象初始化的时候,此时的this指的是子类对象。
}

virtual void print()
{
std::cout<<"AA print.\n";
}
};

AA* AA::pA = NULL;//类的静态成员变量要在类的外面赋值。
//语法:类型 域作用符::变量名 = 值

class  BB:public AA
{
public:
BB():AA(2)
{

}

void print()
{
std::cout<<"BB print.\n";
}
private:
};

void main()
{
//BB b;
//b.print();
////两者地址相同,说明pA指向的是子类对象
//std::cout<<&b<<std::endl;
//std::cout<<AA::pA<<std::endl;
//AA::pA->print();//因为父类的print()是虚函数,如果父类指针指向的是子类对象的话,则会调用子类中的print()函数,事实上调用的的确是子类中的print函数,所以pA指向的是子类对象。

AA a(1);
std::cout<<&a<<std::endl;
std::cout<<AA::pA<<std::endl;

system("pause");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  多态-原理 this