GeekBand第四周学习笔记

vptr&vtbl

virtual point

每一个带有虚函数的对象都会包涵一个指向虚函数表的指针,子类会继承父类的虚函数,所以子类中也会有虚函数表

virtual table

虚函数表拥有一个或复数个虚函数指针,每一个虚函数指针指向实际函数地址,当子类重写了父类的虚函数,子类虚函数表中指向父类此虚函数的指针将会更改指向重写后函数的地址。

class A{
public:
	virtual void vfunc1();
	virtual void vfunc2();
	void func1();
	void func2();

private:
	int m_data1, m_data2;
};

class B :public A{
public:
	virtual void vfunc1();
	void func2();
private:
	int m_data3;
};

class C :public B{
public:
	virtual void vfunc1();
	void func2();
private:
	int m_data1, m_data4;
};

this point

时间: 2024-08-04 17:07:55

GeekBand第四周学习笔记的相关文章

第十四周学习笔记

虚拟存储器 虚拟存储器是硬件异常.硬件地址翻译.主存.磁盘文件和内核软件的完美交互. 虚拟存储器的特点: 中心的 强大的 危险的 物理和虚拟寻址 计算机系统的主存被组织成一个由M个连续的字节大小的单元组成的数据 每个字节都有一个唯一的物理地址 第一个字节的地址为0,接下来的抵制依次+1 这种方式称为物理寻址 虚拟寻址时,CPU通过生成一个虚拟地址来访问主存,该地址被送到存储器之前先转换成适当的物理地址.该任务叫做地址翻译. 地址需要CPU硬件和操作系统之间紧密合作 存储器管理单元(在CPU上)利

《深入理解计算机系统》第四周学习笔记

一.知识点总结 1.信息存储 练习题2.4 0x503c+0x8=0x5044 0x503c-0x40=0x4ffc 0x503c+64=0x503c+0x40=0x507c 0x50ea-0x503c=0xae 1)字长:指明整数和指针数据的标称大小.一个字长为w的机器的虚拟地址范围为0~2^(w-1),程序最多访问2^w个字节 int .char 4字节,单精度float 字节,双精度double 8字节 2)小端法:最低有效字节在最前面的顺序存储 大端法:最高有效字节在最前面的顺序存储 练

第四周学习笔记

前周和本周主要学习登录和注册的内容,其中登录和注册分别有三种方法.登录可以通过查询标量.参数.参数方向三种命令来实现:注册有写入.异常.存储过程三种实现命令. 结合上课内容,我们分别总结和实现这几种命令. (1)实现登录: ①运用查询标量: C#主要代码如下: private void btn_LogIn_Click(object sender, EventArgs e) { SqlConnection sqlC = new SqlConnection(); sqlC.ConnectionStr

Python第四周 学习笔记(1)

函数 Python的函数没有return语句,隐式会返回一个None值 函数是可调用的对象,callable() 函数参数 参数调用时传入的参数要和定义的个数相匹配(可变参数例外) 位置参数 def f(x, y, z) 调用使用 f(1, 3, 5) 按照参数定义顺序传入实参 关键字参数 def f(x, y, z) 调用使用 f(x=1, y=3, z=5) 使用形参的名字来出入实参的方式,如果使用了形参名字,那么传参顺序就可和定义顺序不同 传参 要求位置参数必须在关键字参数之前传入,位置参

GeekBand第一周学习笔记

Class member Modifiers(类成员修饰词) public(公有):可被任何函数及类访问 private(私有):无法被非友元的外部函数及类访问; protected(保护):只能够被自身及子类访问; friend(友元):修饰非操作类成员,可将外部函数或类指定为操作类的友元函数(类),友元函数(类)中可直接访问操作类中的private成员. (PS:class的objects<实例>互为friends<友元>) Class with pointer member(

GeekBand第二周学习笔记

Copy Ctor(拷贝构造),copy assignment operator(拷贝赋值) Copy Ctor(拷贝构造):默认的拷贝构造函数会将其引用类型的引用拷贝到新实例,若用指针指向两实例的同一引用类型则两指针的值是相同的即指向同一内存地址. 1 String::String(const String& str) 2 { 3 m_data=new char[strlen(str.m_data)+1]; 4 strcopy(m_data,str.m_data); 5 } Copy assi

[GeekBand] 设计模式之观察者模式学习笔记

本文参考文献::GeekBand课堂内容,授课老师:李建忠 :网络资料: http://blog.csdn.net/hguisu/article/details/7556625 本文仅作为自己的学习笔记,不代表权威,因为是初学,有错误烦请大家指正,谢谢. 1.什么是观察者模式,应用场所有哪些? 观察者模式(有时又被称为发布-订阅Subscribe>模式.模型-视图View>模式.源-收听者Listener>模式或从属者模式)是软件设计模式的一种.在此种模式中,一个目标物件管理所有相依于它

20145301第四周学习总结

20145301第四周学习总结 教材学习内容总结 第六章 6.1 何谓继承 何谓继承 面向对象中,子类继承父类,避免重复的行为定义,不过并非为了避免重复定义行为就使用继承,滥用继承而导致程序维护上的问题时有所闻.如何正确判断使用继承的时机,以及继承之后如何活用多态,是学习继承时的重点.: 通过extends继承的父类可以是不加abstract关键字的普通类,也可以是加了abstract关键字的抽象类.继承普通类时可以覆写父类的方法,或者创建自己独有的方法,或者这两者都不使用.继承抽象类时,必须覆

java第四周学习总结

学号20145336 <Java程序设计>第4周学习总结 教材学习内容总结 继承 继承符合(Don't Repeat Yourself)原则,即在自己的代码中不要重复自己编写的信息,这在多层框架中十分有用. 在上图中RPG.java是测试代码,继承的消除了SwordMan.java, Magician.java RPG.java中的重复代码 + 多态与is-a 编译程序就是语法检查器,要知道程序片段为何可以通过编译,为何无法通过编译,就是将自己当做编译程序,检查语法逻辑是否正确,方式是从=号的