一个简单的示例来讲解下这个问题。
- class Concrete
- {
- public:
- private:
- int val;
- char c1;
- char c2;
- char c3;
- };
- class Concrete1
- {
- public:
- int val;
- char bit1;
- };
- class Concrete2 :public Concrete1
- {
- public:
- char bit2;
- };
- class Concrete3 :public Concrete2
- {
- public:
- char bit3;
- };
- int main()
- {
- Concrete2 *pc2;
- pc2->val = 10;
- pc2->bit1 = 'a';
- pc2->bit2 = 'b';
- Concrete1 * pc1_1, *pc1_2;
- pc1_1 = pc2;
- *pc1_2 = *pc1_1;
- cout<< pc2->bit2<<endl;
- return 0;
- }
当经过这个操作:
- pc1_1 = pc2;
- *pc1_2 = *pc1_1;
对象pc1_1中未分配的内容就复制给了pc1_2指向的对象。
以后写程序的时候还真得注意这些小细节。