C++中的this
2016-03-26 14:59
447 查看
1、父类中的this不一定是指向父类对象,也可能指向的是子类对象。
2、当父类初始化自己的对象时,其中的this是指父类对象本身。
3、当子类继承父类时,子类初始化自己的对象,会调用父类的构造函数,此时父类构造函数的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"); }
相关文章推荐
- C#中this指针的用法示例
- C# 参考之访问关键字:base、this
- C#中this的使用实例分析
- javascript运行机制之this详细介绍
- JavaScript通过this变量快速找出用户选中radio按钮的方法
- JavaScript中this关键词的使用技巧、工作原理以及注意事项
- Javascript this 的一些学习总结
- 浅谈javascript中this在事件中的应用
- PPK 谈 JavaScript 的 this 关键字 [翻译]
- js中this用法实例详解
- A标签中通过href和onclick传递的this对象实现思路
- 深入理解Javascript中this的作用域
- JS中的THIS和WINDOW.EVENT.SRCELEMENT详解
- 深入浅析JavaScript系列(13):This? Yes,this!
- Javascript this关键字使用分析
- JavaScript四种调用模式和this示例介绍
- 灵活的理解JavaScript中的this指向
- JQuery this 和 $(this) 的区别
- jquery中this的使用说明
- JavaScript中this的9种应用场景及三种复合应用场景