Fork me on GitHub

C++面试

记录自己遇到的一些C++基础面试题目

基础部分

  1. overridefinal的区别

    override是用来标识派生类需要重写的方法;
    final是用来标识派生类不能重写的方法

  2. sizeof的用法
    首先应该明确sizeof是一个C语言关键字而不是一个函数,用于计算数据空间的字节数,其计算发生在编译时刻。

    sizeof运算符的结果部分依赖于其作用的类型:

    • char或者类型为char的表达式执行sizeof运算,结果为1
    • 引用执行sizeof运算结果得到被引用对象本身所占空间的大小
    • 指针执行sizeof运算得到指针本身所占空间的大小
    • 解引用指针执行sizeof运算得到指针所指向的对象所占空间大小,指针不需要有效
    • 数组执行sizeof运算得到整个数组所占空间大小,等价于对数组中所有元素各执行一次sizeof运算并求和。注意:sizeof运算不会把数组转化成指针来处理
    • string对象或者vector对象执行sizeof运算只返回该类型固定部分的大小,不会计算对象中的元素占用了多少空间
类型 大小
int *p sizeof(p) = 4;//sizeof(*p) 相当于sizeof(int)
int a[10] sizeof(a) = 4*10
char a = “hello” sizeof(a) = 6; //结尾处有\0
double (a)[3][6]; sizeof(a) = 4; //a为指针
sizeof(a) = 72; // \a为有3*6个元素的数组
sizeof(*a) = 24; // \*a为数组一维的6个指针
sizeof(**a) = 4; // \**a为数组一维的第一个指针
sizeof(**a) = 8; // ****a为double类型的变量

算法

Enjoy it ? Donate for it ! 欣赏此文?求鼓励,求支持!
>