还剩29页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
继承性和派生类面向对象编程中,继承是一种机制,允许类继承另一个类的属性和方法派生类继承基类的特征,并可以添加新的属性和方法,实现代码复用和扩展继承性和派生类的概念继承派生类继承是一种创建新类(派生类)的方式,它继承了已有类(基类)派生类拥有基类的所有成员,还可以添加新的成员,形成新的类的特性代码重用代码扩展继承机制允许代码重用,减少重复代码编写,提高开发效率继承机制允许对基类进行扩展,创建新的类,满足不同的需求继承性的优点
11.代码重用
22.代码维护继承性允许从基类创建新的派修改基类代码可自动影响所有生类,避免重复编写代码派生类,简化代码维护工作
33.扩展性
44.代码组织继承性使扩展已有类变得容继承性提供了一种自然的代码易,添加新的功能或特性组织方式,提高代码可读性和可维护性继承性的实现定义基类1创建具有共同属性和方法的基类声明派生类2使用关键字声明派生类,并指定基类名称class使用继承访问基类成员3在派生类中使用作用域解析运算符访问基类成员::重写基类方法4派生类可以重写基类的方法,实现自定义行为基类和派生类基类派生类继承关系基类是提供通用属性和方法的类,作为派生派生类继承基类的属性和方法,并添加自己派生类通过继承机制建立与基类的联系,形类的基础的特质,形成更具体和复杂的类成层次化的类结构派生类的构造函数派生类构造函数用于初始化派生类对象,包括其基类部分和派生类部分派生类构造函数1初始化派生类对象基类构造函数2初始化基类部分派生类成员3初始化派生类成员派生类构造函数会自动调用基类构造函数,从而初始化基类部分然后,派生类构造函数会初始化其自己的成员变量基类和派生类的关系派生类继承基类的属性和方法派生类可以添加新的属性和方法,也可以重写继承的基类方法基类是派生类的基础,派生类是基类的特化例如,动物是一个基类,而猫和狗是派生类访问控制说明符公共访问私有访问保护访问用关键字声明,任何地方都能访用关键字声明,只能在类内部用关键字声明,类本身及其`public``private``protected`问访问派生类能访问基类成员的访问访问说明符继承与访问基类成员可以被声明为公有()、私有()或保护派生类继承的基类成员的访问权限取决于基类成员的访问说明public private()类型符protected公有成员可以在派生类和程序的其他部分中访问保护成员可以被派生类访问,但不能被程序的其他部分访问继承的层次结构123单一继承多重继承多级继承一个派生类只能从一个基类继承,形成一个派生类可以从多个基类继承,形成派生类可以从另一个派生类继承,形成简单的树状结构更复杂的树状结构更复杂的继承层次结构继承的类型单一继承多重继承多层继承混合继承一个派生类只从一个基类继一个派生类可以从多个基类继派生类可以从其他派生类继将单一继承和多重继承组合在承承承一起单一继承定义优点单一继承是指一个派生类只能从一个基类继承一个派生类只能•代码复用继承一个基类的所有成员,包括数据成员和成员函数这是最常•层次清晰见的继承方式,它保证了代码的清晰性和简单性•易于维护多重继承
11.多个父类
22.继承属性一个派生类继承自多个基类派生类拥有所有基类的属性和方法
33.代码复用
44.复杂性减少代码冗余,提高代码可维多重继承可能导致代码复杂,护性需要谨慎使用菱形继承多重继承问题数据冗余虚基类解决菱形继承中,一个派生类从多个基类继如果不加以处理,派生类会继承多个基使用虚基类可以避免数据冗余,确保派承,这些基类可能又继承自同一个祖先类中相同祖先类的成员,导致数据冗生类只继承一次祖先类的成员类余虚基类消除歧义菱形继承关键字virtual虚基类用于解决多重继承中可能出现的二义在菱形继承中,虚基类确保派生类仅继承虚使用关键字声明虚基类,它将防止virtual性问题基类一次重复继承同一个基类虚函数和虚函数表虚函数表动态绑定多态性实现每个包含虚函数的类都会有一个隐藏的虚函通过虚函数表,编译器在运行时决定调用哪虚函数表是多态性实现的关键,它允许根据数表,它保存着所有虚函数的地址个函数,实现动态绑定对象的实际类型调用不同的函数纯虚函数和抽象类抽象类纯虚函数抽象类作用抽象类无法实例化,用于定义接口,提供模纯虚函数没有函数体,强制派生类实现它强制子类实现特定接口,提高代码可维护板们性动态绑定运行时确定动态绑定是指在程序运行时确定要调用的函数,而不是在编译时虚函数表每个包含虚函数的类都会创建一个虚函数表,存储指向该类所有虚函数的地址对象类型根据对象的实际类型来选择要调用的函数,而不是对象的声明类型灵活和可扩展动态绑定使代码更灵活和可扩展,可以轻松地添加新的类和函数,而无需修改现有代码多态的实现虚函数表1编译器创建虚函数表,包含指向每个虚函数的指针动态绑定2运行时,根据对象类型选择正确的函数函数调用3通过指针或引用调用虚函数结果4根据对象的实际类型执行相应的函数虚函数的使用示例好处虚函数使用示例,展示如何使用虚函数实虚函数允许程序在运行时确定要调用的函现多态例如,一个名为的基数,而无需事先知道对象的实际类型这Animal类,包含一个名为的虚函使得程序更加灵活,可以处理各种不同类makeSound数它的派生类和可以重型的对象Dog Cat写此函数,分别输出和Woof,从而实现不同动物的声音Meow动态类型转换概念在运行时改变变量的类型,将基类指针或引用转换为派生类指针或引用,允许访问派生类的成员语法使用`dynamic_cast`运算符进行动态类型转换,将基类指针或引用转换为派生类指针或引用安全检查`dynamic_cast`运算符会检查转换是否安全,如果转换不安全,则返回nullptr(指针)或0(引用)应用场景动态类型转换用于处理多态性,允许根据对象的实际类型进行不同的操作运算符重载
11.重载运算符
22.增强代码可读性允许用户自定义运算符的行使用熟悉的运算符,提高代码为,以适应特定数据类型的可读性和直观性
33.运算符重载规则
44.运算符重载局限性需要满足特定语法规则,例如无法重载某些运算符,如返回类型和参数类型、和`::``sizeof``:`友元函数访问私有成员非成员函数友元函数可以访问类的私有成友元函数不是类的成员函数,它员,即使函数本身不是类成员函是在类外部定义的函数数关键字friend在类定义中使用关键字来声明友元函数friend友元类访问权限访问控制关系友元类可以访问另一个类的私有和保护成友元类允许不受访问控制限制地访问其他类友元类之间存在着特殊关系,允许它们相互员的成员访问友元成员函数访问私有成员代码示例合作与共享友元成员函数可以访问类成员,包括私有成定义一个友元成员函数,它可以访问类的私友元成员函数体现了类之间的合作关系,允员,提供了一种绕过访问限制的方法有成员变量并修改其值许一个类访问另一个类的私有成员,实现了代码的共享和协作静态成员变量
11.共享数据
22.存储位置静态成员变量属于类本身,而不是类的任何特定对象它们静态成员变量存储在类的静态数据区域,而不是对象的堆栈在所有对象之间共享,无论创建多少个对象或堆中它们在程序启动时分配内存,在程序结束时释放内存
33.访问方式
44.初始化可以使用类名和范围解析运算符来访问静态成员变静态成员变量需要在类定义外部进行初始化,通常在类定义::量,也可以使用对象名和点运算符来访问之外使用类名和范围解析运算符进行初始化.静态成员函数概念特点与非静态成员函数不同,静态成员函数不与任何特定的对象关•不依赖于对象实例联•只能访问静态数据成员它们是类的成员函数,可以直接通过类名调用•不能访问非静态成员函数•使用类名或对象名调用命名空间作用声明命名空间用于组织代码,防止命名冲突,提高代码可读性和可维护使用关键字声明命名空间,并在其中定义类、函数、`namespace`性变量等访问别名使用操作符访问命名空间中的成员,例如使用关键字为命名空间或其成员创建别名,简化访问方`::``using`式`namespace::member`内联函数代码优化执行效率代码简洁内联函数可以减少函数调用的开销,提升代编译器将内联函数的代码直接插入到调用位内联函数可以使代码更简洁,易于阅读和维码执行效率置,避免函数调用的开销护异常处理异常处理机制异常处理的步骤异常处理机制是一种在程序执行期间发生错误或异常情况时,用•异常的抛出于处理和恢复的机制•异常的捕获它允许程序捕获异常,执行必要的处理,并继续执行或优雅地终•异常的处理止总结
11.继承性
22.多态继承性是面向对象编程的核心概念之一,它允许创建新的类多态允许对象以不同的方式响应同一消息,为代码提供了更(派生类)并从现有的类(基类)继承属性和方法大的灵活性虚函数是实现多态的关键
33.友元
44.其他概念友元关系允许其他类或函数访问私有成员,在代码中提供了其他重要的概念包括命名空间、内联函数、异常处理等,它更多的控制和灵活性们增强了代码的组织、性能和可靠性C++。
个人认证
优秀文档
获得点赞 0