孙鑫c,@孙鑫C++小记

@刚弄的独立博客:http://blog.forgetwind.com,欢迎来踩。
1:类型转换的前提,内存模型匹配。 2:C++多态性: 当C++编译器在编译的时候,发现A类的print是虚函数,这个时候C++就会采用 迟绑定(late binding)的技术,在运行时依据对象的类型(在程序中,我们 传递的B类的首地址)来确认调用的哪一个函数,这种能力叫做C++的多态性。 (编译时确定-normal,or,运行时确定-virtual)
#include using namespace std; class A { public: A() {} ~A() {} virtual void print() { cout << "A" << endl; } }; class B : public A { public: B() {} ~B() {} virtual void print() { cout << "B" << endl; } }; int main() { B b; A *a =&b; a->print(); //late binding,看print是否在B类中存在,存在则调用派生类的print return 0; }
3:根据继承性的原理,基类中的this指针指向派生类的对象。 (@孙鑫C++视频3_测试程序,可调式看运行过程)
#include using namespace std; class A; A *pt = NULL; class A { public: A() { pt = this; } virtual void print() { cout << "基类A的this指针指向A的对象" << endl; } }; class B: public A { public: B() {} virtual void print() { cout << "基类A的this指针指向B的对象" << endl; } }; B test;//调用基类的构造函数时,pt指向A中的this。 int main() { pt->print(); return 0; }
Tags:  孙鑫c视频 孙鑫c语言 孙鑫c教程 孙鑫c视频教程 孙鑫c

延伸阅读

最新评论

发表评论