48day---C++面试题

1.设有数组定义: char array []=“China”;则数组array所占的存储空间为 D
A 4个字节
B 5个字节
C 6个字节
D 7个字节
解:
数组中包含了五个字母和一个字符串结尾’\0’,总共6个字节

2.在32位环境下,程序的输出结果是2014

#include<iostream>
using namespace std;

class Base
{
public:
    virtual int foo(int x)
    {
        return x * 10;
    }

    int foo(char x[14])
    {
        return sizeof(x) + 10;
    }
};

class Derived: public Base
{
    int foo(int x)
    {
        return x * 20;
    }

    virtual int foo(char x[10])
    {
        return sizeof(x) + 20;
    }
} ;

int main()
{
    Derived stDerived;
    Base *pstBase = &stDerived;

    char x[10];
    printf("%d\n", pstBase->foo(100) + pstBase->foo(x));

    return 0;
}

解:int foo(char x[14]) 参数传的是指针,指针是4个字节
3.假定T是一个C++类,下列语句执行之后,内存里创建了9个T对象

T b(5);
T c[6];
T &d = b;
T e=b;
T *p = new T (4);

解:b(5)创建1个,c[6]创建了6个,引用没有创建新对象,拷贝构造创建1个新对象,最后指针创建了1个,所以总共9个

4.定义函数模板add,以下说法正确的有 BC
在这里插入图片描述
A pfun2 = add失败,需要显示定义为pfun2 = add
B pfun1 = add
C pfun3 = add失败,add无法正确推导
D pfun4 = add失败,函数指针不可赋值
解:
A:pfun2 = add的错误提示不是pfun2 = add,而是 no matches converting function ‘add’ to type 'const int (*)(int&, int&);

B:pfun1的参数和返回值一致,可以自动推导,正确赋值;

C:pfun3 = add赋值失败,失败原因和A一样;

D:pfun4 = add显示的指定类型T为int型,赋值正确

5.以下关于内联函数,说法正确的是ABC
A 一般用于加快程序执行速度
B 可能减小可执行文件大小
C 可能增加可执行文件大小
D 以上说法都不正确

6.堆栈溢出一般是由什么原因导致的BC
A 函数代码长度过长
B 循环的递归调用
C 大数据结构的局部变量
D 代码运行时错误
解:
(1) 代码存储在程序区,与栈没有关系。
(2)递归涉及到压栈入栈。
(3)局部变量存在栈区。
(4)栈的大小是固定的

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值