码迷,mamicode.com
首页 > 编程语言 > 详细

C++ 类的继承二(赋值兼容性原则)

时间:2016-06-29 21:54:39      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:

//赋值兼容性原则
#include<iostream>
using namespace std;

class PointA{
public:
    PointA(){
        x = 0;
        y = 0;
    }
    void Set(){

    }
private:
    int x;
    int y;
};

class PointB :public PointA{
public:
private:
    int c;
};

/*
赋值兼容性原则内部原理分析
在子类继承父类的时候,在子类的内存区域上,父类的元素会放在前面,子类的元素会放在父类元素后面
pa->  类的->   本质上是成员变量相对于类指针的偏移量   因为父类元素都在子类元素的前面   相当于子类前一部分就是一个父类对象
所以用父类偏移量取成员变量完全没有问题   这也说明子类继承父类,一定继承了父类的全部成员变量  包括私有成员变量

但是父类不可以代替子类  因为子类用许多父类没有的成员变量,如果按照子类的偏移量访问成员变量   就有可能访问不属于父类的内存空间
就会报错
*/

void ProtectB(PointA pin){

}

void ProtectA(){
    PointA *pa = NULL;
    PointB pb;
    //父类可以用子类来赋值
    pa = &pb;
    //父类可以用子类来初始化
    PointA pa1(pb);
    //子类可以代替父类做形参
    ProtectB(pb);
    //父类可以做子类的引用
    PointA &pa2 = pb;
}

//总结:子类完全可以当父类用,但是父类不可以当子类使用

void main(){
    system("pause");
}

 

C++ 类的继承二(赋值兼容性原则)

标签:

原文地址:http://www.cnblogs.com/zhanggaofeng/p/5628323.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!