c++继承学习总结

本文介绍了C++中类的继承机制,包括继承的基本概念、继承类型的声明方式、成员访问控制、构造函数与析构函数的执行顺序等内容,并通过实例展示了如何在派生类中调用基类的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

继承:在已有类的基础上创造新类。其中已有类称为基类或父类,创造出的新类称为派生类或子类。

          继承的格式为   class 派生类名:基类名。

          继承的类型我们一般都是使用公有继承。

          在继承时需要将基类的数据成员声明为保护类型,因为派生类无法直接使用基类的私有成员。

          派生类中包括了基类中的所有成员(除构造函数和析构函数)。

          在派生类中定义与基类中同名的成员可以屏蔽基类中的成员。

通过显示的使用类名限定符:    类名::成员  可以使用被屏蔽了的基类成员。

派生类访问静态成员:

基类中定义的静态成员可以被所有派生类访问。在派生类中访问静态成员的方式一种是显示说明(类名::成员),另一种是通过对象进行访问(对象.成员)

基类的初始化:

派生类构造函数的声明为:  派生类构造函数(变元表):基类(变元表),对象成员(变元表)

一般格式是

派生类::派生类名(参数总表):基类名(参数表)

    {

            // 派生类新增成员的初始化语句

    }


class A
{
protected:
	int a,b;
public:
	A(int z,int x):a(z),b(x){};
};
class B:A
{
	int c,d;
public:
	B(int q,int w,int e,int r):A(q,w){c=e;d=r;}
};

构造函数的执行顺序:基类、对象成员、派生类。析构函数的执行顺序与构造函数相反。

派生类构造函数和析构函数的定义规则

1、基类的构造函数和析构函数不能被继承

2、如果基类没有定义构造函数或有无参的构造函数, 派生类也可以不用定义构造函数

3、如果基类无无参的构造函数,派生类必须定义构造函数

4、如果派生类的基类也是派生类,则每个派生类只负责直接基类的构造

5、派生类是否定义析构函数与所属的基类无关

多继承就是一个类继承多个基类,因为多继承常常会涉及到二义性问题并不好用所以不推荐使用。

class A//基类
{
public:
       int a1,a2;
      A(int i1=0,int i2=0){a1=i1;a2=i2;}
      void print()
	{
		cout<<"a1="<<a1<<" "<<"a2="<<a2<< endl ;
	}
};
class B:public A//使用公有继承  派生类
{
public:
       int b1,b2;
       B(int j1=1,int j2=1){b1=j1;b2=j2;}
       void print()//定义同名函数
	{
		cout<<"b1="<<b1<<" "<<"b2="<<b2<<endl ;
	}
};
int main()
{
	B b;
        b.A::print();//使用类名限定符来调用基类中被屏蔽了的基类成员
        b.print();
}
//输出结果  a1=0 a2=0
//          b1=1 b2=1

感悟:继承的使用一般是在写完程序后找到程序中相同的操作然后将其选出来构成一个类其他类来继承它。继承的使用可以大大简化代码缩短代码的长度,今后一定会经常用到。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值