Chinaunix首页 | 论坛 | 博客
  • 博客访问: 353510
  • 博文数量: 82
  • 博客积分: 3353
  • 博客等级: 中校
  • 技术积分: 742
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-20 19:13
文章分类

全部博文(82)

文章存档

2015年(1)

2014年(1)

2013年(1)

2012年(12)

2011年(3)

2010年(25)

2009年(37)

2008年(2)

我的朋友

分类: C/C++

2012-03-21 10:40:59

一、封装、继承,这些就不多说了。
二、this指针
非static成员函数都会被添加这个参数。
三、虚函数与多态
实现对象操作的一般化,一条指令实现不同的操作。
not-virtual 函数,在编译时期就转换成一个固定地址的调用了,称为前期绑定或者静态绑定。
virtual函数,必须在执行期才能判断之,称为后期绑定或动态绑定。

函数声明的时候加上virtual,即为虚函数,编译器会为类加上一项成员变量,指向虚函数表的指针。虚函数表记录了所有虚函数的真实地址。
派生类继承基类的虚函数表,当改写虚函数时,虚函数表就受到了影响,表中元素所指的函数地址将不再是基类的函数地址,而是派生类的函数地址。
如果通过基类指针指向派生类,调用的虚函数还是派生类所定义的;但是如果把派生类对象(不是指针)强制转换成基类,那么编译器会进行拷贝构造,从而使派生类的虚函数表变成基类的内容了,那么此时调用的虚函数就会成为基类所定义的了。

四、静态成员
声明的时候加上static,为类所有,不属于某个对象,如果是成员函数,那么不再有this指针,没有this指针,正是call back函数所需要的。

五、运行时类型识别(RTTI)
六、动态创建
七、异常处理
八、Template
template
T power(T base,  int exponent)
{
return ;
}

template
class CThree
{
public:
private:
}
使用:CThree obj(2);

编译器遇到template时,不能够立即生成机器代码,知道template被指定某种类型。这意味着template的完整定义将出现在被使用的每一个角落。如果在不同文件中,有相同的定义,就出现重复了,所以在链接的时候删除重复的定义代码。
阅读(899) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

我是月老2012-03-22 22:44:04

封装、继承、多样性&……