@孙鑫C++小记

@刚弄的独立博客:http://blog.forgetwind.com,欢迎来踩。

1:类型转换的前提,内存模型匹配。
2:C++多态性:
当C++编译器在编译的时候,发现A类的print是虚函数,这个时候C++就会采用
迟绑定(late binding)的技术,在运行时依据对象的类型(在程序中,我们 
传递的B类的首地址)来确认调用的哪一个函数,这种能力叫做C++的多态性。
(编译时确定-normal,or,运行时确定-virtual)

  
    
#include < iostream >
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 < iostream >
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 ;
}

你可能感兴趣的:(C++)