【C++继承】继承

文章详细介绍了C++中的继承概念,包括继承的构造和析构顺序(先构造父类,后构造子类,析构顺序相反),子类如何调用父类的成员对象和有参构造,以及如何处理继承中的同名成员(通过作用域解析)。同时指出子类不能继承父类的构造函数、析构函数和赋值运算符。
摘要由CSDN通过智能技术生成

文章内容如下:

1)继承

2)继承中构造和析构的顺序

3)子类调用父类的成员对象、父类的有参构造

4)继承中的同名处理

5)子类不能继承父类的成员

    一。继承   

        保留父类的数据和方法,自己再新增一部分数据和方法叫继承。继承的作用是为了提高代码重用,提高开发效率。继承用如下格式表述,继承规则是,所有父类私有在子类中不可访问,公共继承保持不变,保护继承变保护,私有继承变私有。

class 父类{};
class 子类:继承方式 父类名
{
    """新增子类数据"""
};

"""继承方式为"""
"""private protected public(推荐)"""

 二。继承中构造和析构的顺序

        当我们构建子类的时候,其实是先把子类所对应的父类给构造出来,再构造对象成员的构造函数,然后再构造子类自身的空间,析构这与其相反。一句话总结,构造:父成子(父类-成员(变量,函数,类的对象)-子类);析构:子成父。

class Base
{
public:
        Base(){cout << "父类构造" << endl;}
        ~Base(){cout << "父类析构" << endl;}
};

class Other
{
public:
    Other(){cout << "Other构造" << endl;}
    ~Other(){cout << "Other析构" << endl;}
};

class Son:public Base
{
public:
    Other ob;
public:
public:
    Son(){cout << "Son构造" << endl;}
    ~Son(){cout << "Son析构" << endl;}

};

int main()
{
    Son ob;
    return 0;
}

 三。子类调用父类的成员对象、父类的有参构造

        子类实例化对象时,会自动调用成员对象默认构造、父类对象默认构造,即默认掉用都是无参构造,子类只有使用初始化列表才能调用成员对象,父类的有参构造

Son(int a,int b,int c):Base(a),ob(b)
{
    this->c = c;
    cout << "Son有参构造" << endl;
}

"""Base是父类名称,ob是成员对象,Son是Base的子类,因为Base没有对象所以只能用父类名"""

四。继承中的同名处理

        同名处理是针对子类与父类提出的,有时候子类继承了父类的一些成员但是并不熟悉这些成员的名字,会出现子类取成员名与父类成员名同名的情况,针对这种情况最简单最安全的处理方式是加作用域,即访问子类不需要加作用域,访问父类要加作用域,这是因为同名时默认优先访问子类成员

class Base
{
public:
    int a;
public:
    Base(int a){this->a;}
};

class Son:public Base
{
public:
    int a;
    Son(int x,int y):base(x){a = y}
};

int main()
{
    son ob(10,20)
    cout << ob.a << endl;"""默认访问子类中的a"""
    cout << ob.Base::a << endl;"""这是在访问父类中的a"""
}

五。子类不能继承父类的成员

        子类不能继承父类的构造函数,析构函数以及operator=也不能被继承。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值