本文介绍: 1. 下面代码sizeof(A)结果为()A:20B:21C:22D:24。

第一题

1. 下面代码sizeof(A)结果为()

#pragma pack(2)
class A
{
    int i;
    union U
    {
        char str[13];
        int i;
    }u;
    void func() {};
    typedef char* cp;
    enum
    {
        red,
        green,
        blue
    }color;
};

A:20

B:21

C:22

D:24

答案解析 C

本题考查的是如何计算类所占空间大小,union(联合体)和enum(枚举类型)的空间计算

相关博客C/C++内存对齐规则(结构体、联合体、类)-CSDN博客

首先我们来梳理一下:

1. 只算成员变量大小,不算成员函数

2. typedef只是对类型定义没有空间,也不用算;

3. 需要算的有

int i;

union;

enum;

一步:算int i我们首先要看对齐数是多少

上面的#pragma pack(2)是把默认对齐数设定为2

对齐数 = 默认对齐数和成员本身大小的较小值

所以int i的对齐数为2,但是每个都是从偏移量0的位置开始,然后占据自身大小字节

第二步计算union大小

算union大小,有两个原则

1. union联合体大小至少是最大成员大小

2. 联合体大小不是最大对齐数的整数倍的时候,要扩大到最大对齐数的整数倍;

所以union中的char数组的对齐数为1,int的对齐数为2;

最后union所占空间为14

第三步:计算enum枚举类型的大小记住枚举类型大小就是4字节,所以跟默认对齐数比较之后,对齐数为2;

第二题

2. 使用重载函数编程序的目的是()

A:使用相同函数调用功能相似函数

B:共享程序代码

C:提高程序的运行速度

D:节省存储空间

答案解析 A

A:正确重载函数写出来的目的就是为了完成不同类型却相同功能比如你要实现加法函数,肯定会有很多类型,我们需要函数重载

B:错误不可以共享代码

C:错误:都是调用函数,说白了代码都一样,不会提高速度

D:错误:不会节省空间

第三

3. 下列运算符重载函数中,属于友元函数的是()

A:Base operator+(Base);

B:Base operator–(Base);

C:Base operator&&(Base, Base);

D:Base operator++(Base,int);

答案解析 BCD

在正常的成员数中,会有一个隐藏this指针,作为成员函数的第一个参数,但是有的时候我们是不需要this指针作为函数的参数的;这个时候友元函数就出现了;

A:+运算符,是需要两个操作数的,A选项显式地给了一个Base对象,然后有一个隐藏this指针满足+运算符语法要求;

B:前置–运算符,只需要一个操作数,所以B的函数必须是友元函数才能实现

C:&&运算符需要两个操作数,B选项显式地传了两个参数作为操作数,所以也不需要this指针了;

D:后置++运算符需要一个操作数,后置++在函数参数这里有个int来区分的,int就是后置,不带的就是前置;所以这里显式传了一个参数作为操作数,不需要this,就为友元

第四题

4. 下面关于C++缺省参数描述错误的是( ) 【多选

A.缺省参数是声明定义函数时为函数的参数指定一个默认值.

B.在调用缺省参数的函数时,如果没有指定实参则采用默认值,否则使用指定的实参

C.C和C++都支持缺省参数

D.全缺省就是参数全部给缺省值,半缺省就是缺省一半的值

答案解析 C D

A:正确缺省参数就是声明或者定义时候给函数参数一个缺省值;

B:正确,缺省参数就是为了我们没有给指定的实参时,给形参提供缺省值;

C:错误,C不支持,缺省参数是C++的;

D:错误,全缺省是所有参数都有缺省值,半缺省是有参数有缺省值,有的没有

第五题

5. 以下不是double compare(int,int)的重载函数的是( )

A.int compare(double,double)

B.double compare(double,double)

C.double compare(double,int)

D.int compare(int,int)

答案解析 D

重载函数:参数的类型不同,参数个数不同,跟返回值无关;

A、B、C为重载函数

D不是,因为参数类型相同个数相同

原文地址:https://blog.csdn.net/2302_76941579/article/details/134655102

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_39950.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注