博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C/C++复习总结
阅读量:4574 次
发布时间:2019-06-08

本文共 1342 字,大约阅读时间需要 4 分钟。

4.对于下面的类CA,sizeof(CA) = _B_:

A. 4   B. 8   C. 12  D. 16

class CA

{

public:

    CA();

    virtual ~CA(); //因为有虚函数,所以会有4个字节的虚表指针,虚表是用来存储该类及其父类的变量和成员函数的一张表

private:

    int m_iTime;    //成员变量4个字节

public:

    int GetTime();

    int SetTime(int iTime);

};

 在C++语言中,每个有虚函数的类,编译器都会为它生成一个虚拟函数表(简称:虚表),表中的每一个元素都指向一个虚函数的地址。  此外,编译器当然也会为类加上一个成员函数,是一个指向该虚函数表的指针(常被称为vptr),每一个由此类别派生出来的类,都有这么一个vptr。 

   虚表的内容是依据类中的虚函数声明次序--填入函数指针。派生类别会继承基础类别的虚表(以及所有其他可以继承的成员),当我们在派生类中改写虚函数时,虚表就受了影响;表中的元素所指的函数地址将不再是基类的函数地址,而是派生类的函数地址。 

 

多态的实现只有在将子类对象赋给父类的对象的指针或引用的时候才能实现。   

 

C语言char字符数组,是个很幽默的话题,在定义char数组的时候

char str[]={'h','e','l','l','o'};

 

printf("%d\n",sizeof(str));

printf("%s\n",str);

这样打印的结果显示分配的内存就是五个字节,并没有自动添加/0结束字符,在用%s打印的时候会由于找不到结束字符而出现乱码。

但是如果在定义的时候指定字符数,如下:

char str[10]={'h','e','l','l','o'};

结果显示分配的字节空间是10个,并且有自动添加结束字符/0

再换一种方式定义:

char strr[]="hello";

printf("%s\n",strr);

printf("%d",sizeof(strr));

结果显示这样strr分配的空间是六个字节,自动添加结束字符

 

C语言里面虽然也有<string.h>头文件,但是并没有string数据类型,这个头文件只是为了方便处理char数组或指针类型的字符串而设立的。

 

在对文件进行操作的时候,注意在写文件路径的时候要把\改成\\这样避免转义字符,还有一种更好的方法那就是把\改成/(跟JAVA一样的,看来/这种处理方式在C/C++和Java里面差不多)

 

栈:顺序栈就用一个数组来存储数据元素,并用一个坐标位置来记录栈顶、一个整型来记录栈的大小

链式栈则用一个头节点的next指针来记录栈顶位置

队列:顺序队列也是用数组来记录数据,并用两个整形用来记录队列的头和尾,注意:一个容量为N的队列需要分配的内存空间是N+1,因为判断队列满的条件是(rear+1%size==front用循环队列来避免假空的现象

队列的链式存储和栈的区别就是除了定义节点的格式以外还要重新定义一个结构体用来指向头结点和尾节点

转载于:https://www.cnblogs.com/totem1990/archive/2012/09/09/2678033.html

你可能感兴趣的文章
Text 尺寸获取
查看>>
mongodb 32系统安装失败问题
查看>>
Php无限层级并显示层级数
查看>>
mac os x lipo 工具
查看>>
Chart控件 学习
查看>>
先知先觉
查看>>
TNS-12549问题分析及解决办法
查看>>
【转】如何拓展设计思维我爱设计思路创意
查看>>
java-正则表达式过滤字符串中的html标签
查看>>
QT paintevent 事件, update()槽函数
查看>>
C++拷贝构造函数(深拷贝,浅拷贝)
查看>>
第十三章、MYSQL常用操作
查看>>
FreeRTOS 二值信号量,互斥信号量,递归互斥信号量
查看>>
$POJ2893$ $M \times N$ $Puzzle$
查看>>
[android] 编译报错:Out of memory error
查看>>
【网络流24题】骑士共存问题(最大流)
查看>>
love2d角度,方向以及旋转
查看>>
win 运行
查看>>
12.2 VUE学习之-if判断,实践加减input里的值
查看>>
雪碧图元素自适应--CSS黑魔法
查看>>