导图社区 计算机C语言基础要点批注
计算机C语言基础要点批注,包括内存、this指针、继承inherit、static静态、虚函数等的相关内容。
计算机C with STL要点批注,包括pair对组、STL标准模版库、函数模版、函数模版、文件操作、STL常用算法等内容。
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
要点批注1
1. 内存
成员变量和成员函数分开储存
每一个空对象都有自己独一无二的地址、
空对象占用一个字节
静态变量 类内声明 类外初始化。
2. this指针
this指针指向的是被调用的成员函数所属的对象
返回对象本身用*this
3. 继承inherit
继承方式
protect继承
继承后public与protect变为protect成员
private继承
与上同理
public继承
继承部分仅为public部分与protect部分
父类所有非静态成员均会被继承,父类私有成员会被隐藏,但依旧被继承下去
继承中的构造和析构顺序:首先构造父类再构造子类,析构与构造顺序相反。
父类与子类出现同名成员属性,子类会将父类所有同名属性隐藏,默认调用子类函数,要调用父类成员函数要加作用域。
静态同名继承
静态变量
访问子类,默认访问方式
访问父类,类名访问 子类::父类::
静态函数
同变量访问
多继承
class Son:public Person1,public Person2
菱形继承
virtual关键字 虚继承
相当于仅继承一份,共享数据
实际上继承了一份指向该属性的指针
虚继承:在继承定义中包含了virtual关键字的继承关系;
虚基类:在虚继承体系中的通过virtual继承而来的基类;
虚继承语法
class Son:virtual public Person
4. static静态
两种访问方式
作用域访问,对象访问
static特点
随着类的加载而加载也就是说:静态会随着类的消失而消失,说明他的生命周期最长
优先于对象存在
被所有对象所共享
可以直接被类名调用
int age(成员变量)实例变量和 static int age(静态成员变量)类变量的区别
实例变量是随着对象的创建而存在堆内存中 类变量随着类的加载而存在于方法区中
实例变量随着对象的消失而消失 类变量生命周期最长,随着类的消失而消失
静态使用注意事项
静态方法只能访问静态成员
静态方法中不可以定义this,super关键字 因为静态优先于对象存在,所以静态方法中不可以出现this
主函数是静态的
静态成员类内声明,类外初始化
子主题
5. 多态
动态多态
派生类和虚函数实现运行时多态
静态多态
函数重载和运算符重载属于静态多态
主要区别
动态多态地址晚绑定,静态多态地址早绑定
注意事项
子类函数重写,父类函数引用可指向子类
6. mutable关键字 const常量
注意事项:mutable不能修饰const 和 static 类型的变量
const Person p;//在对象前加const,变为常对象 //常对象只可以调用常函数
常函数
只有普通成员函数才能有常函数
void showPerson() const//(该const修饰this指针,让指针指向的值也不可修改) //const Person *const this //this指针的本质是指针常量,指向不可修改;
非const对象可以调用常函数,也能调用非常函数。但是常对象只能调用常函数,不能调用非常函数(常对象也包括常指针和常引用)
常函数中的this指针是常指针,不能在常成员函数中修改成员变量的值
7. 虚函数
虚析构函数
虚析构函数的特点是:在父类中通过 virtual 修饰析构函数后,通过 父类指针再去指向子类对象,然后通过 delete 接父类指针,就可以 释放掉子类对象了
如果使用父类的指针通过 delete 的方式去释放子类的 对象,那么只要能够实现通过父类的指针执行到子类的析构函数即可
子类中不写虚析构函数,计算机会默认给你定义一个虚析构函数, 前提是你在父类中得有 virtual 来修饰父类的析构函数
纯虚函数和抽象类
语法:virtual int fun()=0,纯虚函数
类中包含纯虚函数,则称为抽象类,无法实例化对象
抽象类的子类必须重写父类纯虚函数,不然也将作为抽象类处理