还剩28页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
类和对象C++是一种强大的面向对象编程语言,它允许您创建和使用类和对象C++来构建复杂的应用程序类是数据和方法的蓝图,对象是类的实例,它们包含数据和方法课程大纲什么是类类的定义中的基本概念,描述对象的数据和行使用关键字定义类的结构,包括成C++class为员变量和成员函数访问控制修饰符对象的创建和销毁、和,控制成员变创建对象实例并使用它,以及使用析构函public privateprotected量和函数的访问权限数释放内存什么是类蓝图和模板对象的构造数据和功能类就像蓝图或模板,用于创建特定类使用类创建的对象,就像根据蓝图建类包含数据的描述和操作数据的函数型的对象造房屋一样,这些函数定义了对象的特性和行为类的定义类名成员变量12类名用于标识类,它是类成员变量是类的属性,用的唯一标识符于存储类的状态信息成员函数访问控制34成员函数是类的操作,用访问控制用于限制对成员于定义类的行为变量和成员函数的访问类的成员变量定义作用类成员变量是类中定义的变成员变量用来描述类的属性量,用于存储类对象的状态或特征它们的值反映了对每个对象拥有自己的成员象当前的状态,并在程序运变量副本行过程中可以被修改访问成员变量可以通过对象名和点运算符来访问,例如,object.member_variable类的成员函数成员函数的作用成员函数的语法定义在类内部的函数,称为成员函数它们用于操作类的成员函数的定义形式与普通函数类似,但要加上类名和作成员变量,实现类的功能用域运算符成员函数可以访问类的私有成员,方便对数据进行操作返回值类型类名成员函数名参数列表::{函数体//}访问控制修饰符公开访问私有访问
1.
2.12使用关键字,表示使用关键字,表示public private该成员可以在类内部和外该成员只能在类内部访问部访问保护访问
3.3使用关键字,表示该成员可以在类内部、子类和友元protected访问构造函数和析构函数构造函数1对象创建时自动调用初始化成员变量2确保对象初始状态分配资源3例如内存分配析构函数4对象销毁时自动调用释放资源5例如内存释放构造函数在对象创建时自动执行,用于初始化对象成员变量和分配必要的资源析构函数在对象销毁时自动执行,用于释放对象占用的资源,例如释放内存构造函数的重载定义示例多个构造函数可以拥有相同名称,但参数列表不同通过重载构造函数,可以方便地创建带有不同初始值的类对象123作用根据传入的参数类型和数量,自动选择合适的构造函数,创建不同类型的对象拷贝构造函数创建新对象1使用已有对象初始化新对象浅拷贝2仅复制成员变量的值深拷贝3复制动态分配的资源防止资源泄漏4避免多个对象指向同一个资源拷贝构造函数在创建新对象时,使用已有对象初始化新对象浅拷贝仅复制成员变量的值,可能导致多个对象指向同一个资源,造成资源泄漏深拷贝复制动态分配的资源,避免资源泄漏静态成员变量和函数静态成员变量静态成员函数属于类本身,而非某个特定可以使用类名调用,不依赖对象使用类名访问,所有于任何对象可访问静态成对象共享同一份数据员变量,但不能访问非静态成员声明方式使用关键字声明在类定义的外部进行初始化,使用类名static::变量名进行访问常量成员函数常量成员函数常量成员函数的限制常量成员函数的使用在函数声明后添加关键字,表示不能修改成员变量,只能访问常量成用于保证对象状态的一致性,防止意const该函数是常量成员函数员变量外修改数据对象的创建和销毁对象创建使用类名后跟变量名来创建对象,例如ClassName objectName;构造函数调用创建对象时,会自动调用构造函数来初始化对象成员内存分配对象在内存中分配空间,用于存储成员变量对象销毁对象不再使用时,会自动调用析构函数来释放内存内存释放对象占用的内存空间被释放,以便其他对象使用对象数组定义初始化示例对象数组是存储多个相同可以使用初始化列表或循例如,可以创建一个名为类型对象的集合环来初始化对象数组的对象数组,students用于存储多个学生对象使用数组名和下标访问数初始化列表方法简洁,循组中的每个对象环方法更灵活每个学生对象可以包含姓名、学号、成绩等信息动态创建对象定义指针1使用运算符分配内存new初始化对象2在指针指向的内存地址上创建对象释放内存3使用运算符释放内存delete动态创建对象允许在程序运行时根据需要创建对象,并提供更灵活的内存管理方式通过使用运算符,可以在堆上分配内存,并通过指针访问创建的对象new程序结束后,必须使用运算符释放分配的内存,避免内存泄漏delete友元函数访问权限访问控制共享数据友元函数可以访问类的私有成员通过友元函数,可以打破封装性,提友元函数可被其他类或函数调用,实高代码灵活性现数据共享友元类相互信任代码重用友元类允许一个类访问另一友元类可以减少代码重复,个类的私有成员,即使没有提高代码可维护性继承关系安全性友元关系应该谨慎使用,因为它会破坏类的封装性继承概述继承的定义继承的好处继承是面向对象编程中的核心概念之一代码复用避免重复编写代码,提高效率继承允许创建新的类(子类),它继承了现有类的属性和代码可维护性修改父类代码,子类会自动更新,减少维方法(父类)护工作量继承的访问控制访问public子类可以访问父类的所有成员,包括数据成员和成员函数public访问protected子类可以访问父类的成员,但不包括成员protected private访问private子类无法访问父类的成员,只能通过父类的或成员函数来private publicprotected访问多重继承多重继承示例菱形继承问题多重继承允许一个类继承多个基类的在中,使用冒号和逗号来指定多个当多个类继承同一个基类时,可能会C++属性和方法这可以提高代码重用率基类每个基类都需要定义不同的成出现菱形继承问题这会导致重复数和灵活度例如,一个汽车类可以继员变量或方法,以避免冲突据和潜在的错误“”承车辆类和引擎类“”“”虚函数和多态虚函数多态性虚函数是指在基类中声明为多态性指的是同一操作在不同的对virtual的成员函数,用于实现运行时多态象上具有不同的行为,使得程序代性码更加灵活和可扩展动态绑定虚函数通过动态绑定机制实现多态性,在运行时根据实际对象的类型来调用相应的函数纯虚函数和抽象类纯虚函数抽象类纯虚函数是指在基类中声明但没有定抽象类是指包含至少一个纯虚函数的义的函数,使用来标识类=0纯虚函数定义了接口,但没有实现,抽象类不能直接实例化,只能作为基必须在派生类中被重新定义类被继承,由派生类实现其纯虚函数虚析构函数确保安全释放资源避免内存泄漏
1.
2.12虚析构函数在基类中声明,并如果基类析构函数不是虚函数使用关键字修饰,用于,则在通过基类指针删除派生virtual确保在通过基类指针删除派生类对象时,只有基类对象的析类对象时,派生类对象的析构构函数会被调用,而派生类对函数也被调用,避免内存泄漏象的析构函数不会被调用,会导致内存泄漏动态绑定良好的编程习惯
3.
4.34虚析构函数使用动态绑定机制即使没有涉及多态性,也建议,根据对象的实际类型选择合将基类的析构函数设置为虚函适的析构函数调用,确保所有数,这是一个良好的编程习惯资源得到正确的释放,可以避免潜在的内存泄漏问题动态绑定动态绑定是指在运行时确定要调用的函数程序运行时根据对象的实际类型来调用相应的函数运行时确定1对象类型2函数调用3动态绑定在面向对象编程中非常重要,因为它允许使用多态性多态性是指同一操作可以在不同的对象上产生不同的行为运算符重载自定义运算符行为重载运算符可以使类对象使用标准运算符,例如、、等,扩展其运算功能+-*代码示例通过定义运算符重载函数,可以实现对运算符的自定义行为,使其适用于类的对象重载规则重载运算符必须使用关键字,并指定要重载的运算符operator类型转换运算符重载自定义类型转换语法示例允许将一个类的对象隐式或显式转换使用关键字,后接要转换的定义一个类,重载operator Timeoperator int为其他类型,提高代码灵活性目标类型,定义一个成员函数,将对象转换为整数表示的秒数Time函数对象定义优势函数对象是一个可调用对象,可以像函数一样使用,例如使函数对象可以存储状态,可以用于传递参数或在不同函数之用运算符间共享实现应用场景函数对象通常使用类来实现,重载运算符,使其可调用函数对象可用于算法、标准库函数和泛型编程表达式Lambda匿名函数简洁语法捕获机制返回值类型表达式是一种匿名表达式使用简洁的表达式可以使用捕表达式可以指定返Lambda Lambda LambdaLambda函数,可以定义在需要的地语法,可以简化代码,提高获机制访问外部作用域的变回值类型,提高代码可读性方直接使用,无需显式声明代码可读性量,方便操作数据和安全性函数智能指针自动管理内存多种类型智能指针是一种可以自动管标准库提供了几种智能C++理动态分配内存的类模板指针类型,包括unique_ptr它可以防止内存泄漏和悬垂、和,shared_ptr weak_ptr指针问题每种类型都有不同的使用场景提高代码安全性通过智能指针,可以减少手动内存管理的错误,提高代码的安全性总结本课程涵盖了类和对象的方方面面,从基本概念到高级特性C++深入了解了类的定义、成员变量、成员函数、构造函数、析构函数、继承、多态、运算符重载等通过本课程的学习,您可以掌握类和对象的基本知识,并能够运C++用这些知识进行面向对象的编程。
个人认证
优秀文档
获得点赞 0