条款01:视C++为一个语言联绑C++的四个语言层次:C:C++是以C为基础的。基本数据类型、语句、预处理器、数组、指针等统统来自C。Oject-Oriented
C++:面向对象这一特性包含了:类,封装,继承,多态,虚函数等Template C++:C++的泛型编程能力。STL:一个标准的temp...
分类:
编程语言 时间:
2014-05-22 03:36:57
阅读次数:
338
转自:http://blog.csdn.net/Solstice/archive/2008/10/13/3066268.aspx这是一篇比较情绪化的blog,中心思想是“继承就像一条贼船,上去就下不来了”,而借助boost::function和boost::bind,大多数情况下,你都不用上贼船。b...
分类:
其他好文 时间:
2014-05-22 02:12:42
阅读次数:
287
C++虚函数表解析陈皓http://blog.csdn.net/haoel前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了...
分类:
编程语言 时间:
2014-05-21 23:56:48
阅读次数:
507
1.
虚函数虚函数是在某个基类声明为virtual并在一个或多个派生类中重新定义的成员函数。虚函数是C++多态的基础,通过指向类的指针或引用调用,调用的方式是动态联编,到运行时才确定调用的是该虚函数的哪一个实现。非虚函数是静态联编,在编译时刻系统就能根据指针类型确定调用的函数。虚函数一般会有一个默认...
分类:
编程语言 时间:
2014-05-21 20:27:09
阅读次数:
281
从存储空间角度,虚函数对应一个指向vtable虚函数表的指针,这大家都知道,可是这个指向vtable的指针其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过
vtable来调用,可是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所以构造函数不能是虚函数。从使用角...
分类:
编程语言 时间:
2014-05-21 19:34:01
阅读次数:
178
虚函数:
1.虚函数的思想借鉴于Simula语言,可以实现运行的多态。虚函数允许派生类重载、覆盖,即使访问对象所使用的指针类型是基类型,但依旧能调用派生类的相应函数。当使用对象指针或对象引用调用虚函数时,采用动态绑定技术。
2.virtual 关键字只能用在虚函数的声明中,在函数的定义中不能使用 ....
分类:
编程语言 时间:
2014-05-20 13:23:11
阅读次数:
280
如何确定变量的内存布局为什么不直接执行buff里面的shellcode,而要绕远因为虚表指针指向buff,buff的地址还要指向另一个地址,没有办法直接执行buff。这是由虚函数与虚表性质决定。为什么执行完call还必须返回shellcode,call不就是call进shellcode吗?call是...
分类:
其他好文 时间:
2014-05-20 08:28:51
阅读次数:
283
第十三章 虚函数1. 指向对象的指针常用不常用?????????2. 虚函数virtual
体现虚函数的 多态性(动态联编)存储不同对象的指针调用不同类的函数3. 拳击游戏4.
继承是否可以实现多态性继承无法实现多态,要想实现多态就要在基类加virtual5. 在编译时的静态联编6. 在运行时的静态...
分类:
其他好文 时间:
2014-05-19 16:09:34
阅读次数:
235
面向对象编程--再谈文本查询示例[续/习题]//P522 习题15.41
//1 in TextQuery.h
#ifndef TEXTQUERY_H_INCLUDED
#define TEXTQUERY_H_INCLUDED
#include
#include
#include
#include
#include
#include
#include
#include
usin...
分类:
编程语言 时间:
2014-05-18 18:41:59
阅读次数:
454
C++对象模型内存布局如下:
非静态数据成员在对象之内静态数据成员在对象之外静态、非静态成员函数在对象之外类中存在虚函数时,一个类对应一个virtual table放在对象之外,对象中安插一个指针vptr指向这个表。
测试例程:
#include
using namespace std;
class A {
public:
int x, y;
static...
分类:
编程语言 时间:
2014-05-18 07:46:31
阅读次数:
234