- 博客(13)
- 资源 (4)
- 收藏
- 关注
原创 C++虚函数的实现机制
说起虚函数想必大家不会陌生,这可是多态的实现基础,没有它就白瞎了。多态也就是运行时绑定,个人对静态和动态语言之间的差别研究不深,但在鄙人看来,其实动态语言也没有那么神奇的,静态语言只不过是代码区的调用在编译期就已经完全绑定了,而动态函数可以实现在运行期动态绑定。能在运行期动态绑定必然是好的,可以提供更大的灵活性,但是天下没有免费的午餐,想要动态绑定必然需要耗费额外的空间存储一些额外的用于动态跟踪的信息和额外的绑定时间。从后面的对虚函数实现机制中我们可以窥其一二。
2014-08-20 14:41:12 1069
原创 函数参数的获取:嵌入汇编的方法
函数参数的获取:嵌入汇编的方法通常我们能够想到的函数参数有两种,一种是显示的定长参数,还有就是变长,这两种方式都有各自的捞取参数的方法,但是如果是定长参数却没有参数名该怎么办呢,这节我们就是要讨论一下这个问题,这个尽管在大多数情况下使用不上,但是有时候还是大有用武之地,改文也是为: 深入探讨this指针:从汇编的角度考虑做铺垫的。该文测试环境:VS2010 (win
2014-08-19 17:46:21 2022
原创 深入探讨this指针:从汇编的角度考虑
深入探讨this指针:从汇编的角度考虑总结:至此我们对this指针和成员函数调用有了更进一步的认识,(1) this 指针只存在于成员函数内部,(2) 成员函数的调用时,this指针并没有那么神秘,那完全可以认为对象在调用成员函数时将自身地址作为函数的第一个参数在默认情况下传递给了函数的默认形参,只不过这个默认形参被命名为this罢了,仅此而已,小样,不就是穿了一个马甲吗!(3) 尽管我们可以把this指针当做成员函数的第一个默认参数,但是我们心里应该明白,事实上它还是有点特殊待遇的,它与正常的函数
2014-08-19 16:59:17 3269
转载 C和C++中const的区别
C中的const,功能比较单一,较容易理解: 作用:被修饰的内容不可更改。 使用场合: 修饰变量,函数参数,返回值等。(c++中应用场合要丰富的多) 特点: 是运行时const,因此不能取代#define用于成为数组长度等需要编译时常量的情况。同时因为是运行时const,可以只定义而不初始化,而在
2014-08-19 10:52:56 587
原创 C++ 构造函数:初始化列表(困惑之源之一)
1、STL容器中不能存储引用类型,原因是引用并非对象,而是对象的别名,且STL中的元素需要支持赋值操作符,而引用只支持初始化,不支持赋值操作符,同理数组中也无法存储引用类型,形如int& a[n],无疑是错的。2、在构造函数中我们来看一个有趣的问题:示例 1:class test{public:test():size(10),base(new char[size
2014-08-06 17:48:13 798
原创 C++构造函数:初始化的那些事
结论:(1) 在构造对象的同时,构造函数会企图初始化所有成员变量,当指定了显示的初始化方式则按指定方式初始化,否则调用其所属类的默认构造函数或者无参构造函数进行隐式初始化,如果是内置类型,则跟对象是否为局部变量相同,其初始化行为就好像是在当前声明对象的作用域单独声明该变量一样。(2)按照(1)的结论,为了使得我们的类支持隐式初始化,必须提供隐式初始化所需要的机制,那就是要么类有缺省构造函数,要么为其提供一个无参构造函数。(3)在继承关系的初始化规则中,无论何种情况,基类总是需要被构造的,当你显示指定其
2014-08-06 17:36:45 1019
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人