目录引言类&对象类的成员A)成员访问权限B)成员变量i.autoii.decltypeC)成员函数补充知识1.内联函数2.函数重载3.this指针引言面向对象程序设计(OOP),最核心的概念就是“对象”。简单地说,数据+函数=对象。将一组数据和相关的函数结合起来,构成一个结合体,就是封装的过程。回到顶部类&对象类(class)是一种用户自定义的类型,包含了数据和函数。类中的数据=成员变量在类内定义类中的函数=成员函数在类内声明可以在类内/类外实现classPerson{//自定义的类public:stringname;//成员变量voidget_name(){//成员函数cout定义了类后,将
类与对象|C++基础C++语言程序设计网课C++中支持我们使用类来定义自己的数据类型。类的基本思想:数据抽象(dataabstraction)与封装(encapsulation)。数据抽象:依赖于接口(interface)和实现(implementation)分离的编程(及设计)技术。类的接口:用户所能执行的操作。类的实现:类的数据成员、负责接口实现的函数体、定义类所需的各种私有函数。封装:使类的接口和实现分离。隐藏了类的实现细节(类的用户只能使用接口而无法访问实现部分)。抽象对同一类对象的共同属性和行为进行概括,形成类先注意问题本质,其次是实现过程或细节数据抽象:描述某对象的属性或状态(对象
类与对象|C++基础C++语言程序设计网课C++中支持我们使用类来定义自己的数据类型。类的基本思想:数据抽象(dataabstraction)与封装(encapsulation)。数据抽象:依赖于接口(interface)和实现(implementation)分离的编程(及设计)技术。类的接口:用户所能执行的操作。类的实现:类的数据成员、负责接口实现的函数体、定义类所需的各种私有函数。封装:使类的接口和实现分离。隐藏了类的实现细节(类的用户只能使用接口而无法访问实现部分)。抽象对同一类对象的共同属性和行为进行概括,形成类先注意问题本质,其次是实现过程或细节数据抽象:描述某对象的属性或状态(对象
类与对象-构造函数|C++基础C++语言程序设计网课构造函数在对象被创建时使用特定的值构造对象,将对象初始化为一个特定的初始状态。构造函数形式函数名与类名相同;不能返回值类型,不能有return语句;可以有形式参数,也可以没有形式参数;可以是内联函数;可以重载;可以带默认参数值;构造函数的调用时机在对象被创建时自动调用默认构造函数调用时可以不需要实参的构造函数:参数表为空的构造函数全部参数都有默认值的构造函数隐含生成的构造函数如果程序中未定义构造函数,编译器将在需要时自动生成一个默认构造函数参数列表为空,不为数据成员设置初始值如果类内定义了成员的初始值,则使用类内定义的初始值如果没有定义类内的
类与对象-构造函数|C++基础C++语言程序设计网课构造函数在对象被创建时使用特定的值构造对象,将对象初始化为一个特定的初始状态。构造函数形式函数名与类名相同;不能返回值类型,不能有return语句;可以有形式参数,也可以没有形式参数;可以是内联函数;可以重载;可以带默认参数值;构造函数的调用时机在对象被创建时自动调用默认构造函数调用时可以不需要实参的构造函数:参数表为空的构造函数全部参数都有默认值的构造函数隐含生成的构造函数如果程序中未定义构造函数,编译器将在需要时自动生成一个默认构造函数参数列表为空,不为数据成员设置初始值如果类内定义了成员的初始值,则使用类内定义的初始值如果没有定义类内的
C++-类与对象(2)-继承继承一个小引子有些类之间存在特殊的关系,像下面的图一样:定义这些类时,下级的成员除了有向上一级类的共性,还有自己的特性,这时,就可以用继承的技术,减少代码的重复继承的基本语法class子类:继承方式父类子类:也叫派生类父类:也叫基类#includeusingnamespacestd;//普通页面实现//java页面//classJava{//public:// voidheader(){// cout两次结果均是子类中包含两大成员:1是自己增加的成员(特性)2.是从父类中继承的过来的(共性)继承方式继承一共3种方式公共继承保护继承私有继承继承中的对象模型从父类继承
C++-类与对象(2)-继承继承一个小引子有些类之间存在特殊的关系,像下面的图一样:定义这些类时,下级的成员除了有向上一级类的共性,还有自己的特性,这时,就可以用继承的技术,减少代码的重复继承的基本语法class子类:继承方式父类子类:也叫派生类父类:也叫基类#includeusingnamespacestd;//普通页面实现//java页面//classJava{//public:// voidheader(){// cout两次结果均是子类中包含两大成员:1是自己增加的成员(特性)2.是从父类中继承的过来的(共性)继承方式继承一共3种方式公共继承保护继承私有继承继承中的对象模型从父类继承
C++类与对象(3)—多态一个接口有多种形态,传入的对象不一样,同一个接口执行的操作不同多态的基本概念多态分为两类静态多态:函数重载和运算符重载属于静态多态,复用函数名动态多态:派生类和虚函数实现运行时多态静态多态胡动态多态的区别静态多态的函数地址早绑定,编译阶段搞定函数地址动态多态的函数地址晚绑定,运行阶段确定函数地址例子早绑定#includeusingnamespacestd;classAnimal{//父类public: voidspeak(){ cout晚绑定(只要在父类的函数前面加一个virtual)virtualvoidspeak(){ cout动态多态的满足条件有继承关系子类
C++类与对象(3)—多态一个接口有多种形态,传入的对象不一样,同一个接口执行的操作不同多态的基本概念多态分为两类静态多态:函数重载和运算符重载属于静态多态,复用函数名动态多态:派生类和虚函数实现运行时多态静态多态胡动态多态的区别静态多态的函数地址早绑定,编译阶段搞定函数地址动态多态的函数地址晚绑定,运行阶段确定函数地址例子早绑定#includeusingnamespacestd;classAnimal{//父类public: voidspeak(){ cout晚绑定(只要在父类的函数前面加一个virtual)virtualvoidspeak(){ cout动态多态的满足条件有继承关系子类
C++类与对象(1)类的设计:可以把属性和行为放在不同的权限下struct和class区别在于某人的访问权限不同struct:默认共有class:默认私有对象的初始化和清理如果我们不写,系统会自己给我没写构造函数的语法类名(){}没有返回值,也不写void函数名和类型相同可以有参,也可以无参在调用对象会自动调用函数,无需手动调用,只调用一次析构函数语法~类名(){}同上,不过是无参(不可以重载),销毁时自动调用函数,只调用一次构造函数的分类与调用分类有参和无参(默认)普通和拷贝拷贝函数函数名(const函数名&p(对象)){age=p.age;}#include//构造函数和析构函数using