类与对象【继承】-----语法、继承方式、构造析构、同名、菱形继承

类与类之间具有公共部分和非公共部分

————我们定义多个类的时候,采用继承的方法,减少代码重复

继承语法:class 子类(也称派生类) : 继承方式 父类(也称基类)

注意:继承是对语法的优化,对类对象没有影响

——————如继承有int a;那么构建类时,一定会构建a;

//继承的技术写相似结构体

class base{
public:
    void header(){
        cout<<"----------head---------"<<endl;
    }
    void footer(){
        cout<<"----------foot---------"<<endl;
    }
    

};

class Pathon:public base{//继承公共页面
public:
    void contend(){
        cout<<"------------Pathon---------"<<endl;
    }
};

class Java:public base{
public:
    void contend(){
        cout<<"------------Java---------"<<endl;
    }
};

继承方式(public,protected,pricate)

注意:

        Public<protect<private(权限只能从左往右变化)

 继承构造和析构的顺序

 base 构造函数

 son   构造函数

 son   析构函数

 base 构造函数

 子类父类成员名处理方式

子类调用父类同名成员或者成员函数:

        son.base::a;

        son.base::func();

class base{
public:
    int a;
}

class son : public base{
    int a;
}

son b;

b.base::a用来调用父类的值

 同名静态成员处理

 静态成员属性:(可通过对象访问;可通过类名来访问)

        1、编译阶段分配内存

        2、类内声明,类外初始化

        3、所有对象共享同一份数据

通过对象访问:  son.base::a(父类);son.a(子类); 

通过类名来访问: son::base::a(父类);son::a(子类);

调用静态函数同理

 多继承

class 子类 : 继承方式 父类1,继承方式 父类2........ 

(实际项目中不建议使用)

菱形继承 

问题: 菱形继承会引发两个父类具有相同的对象;

利用虚继承(class sheep :virtual public animal{};)会自动合并两个同名对象

 

         当我们使用virtual去虚化base,实际上就是把对象的继承转变成了指针的继承(通过偏移量继承)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值