有一个如下的结构体:
struct A{
long a1;
short a2;
int a3;
int a4;
};
请问在64位编译器下用sizeof(struct A)计算出的大小是多少?( ) A
A.24
B.28
C.16
D.18
解析:
A.首先明确,64位下指针大小为8个字节,这是关键,a1占4字节,a2两字节,由于a3占4字节, a2需要补齐2个字节,对于a1,a2,a3一共开辟了12个字节,由于a4占8个字节,所以a4之后要 补齐4个字节才能是8的整数倍,最后总和为24字节,刚好也是8的倍数,所以最终结构体大小为 24字节,答案A
B.错误
C.如果系统是32位,则结构体大小为16
D.错误
在C++中的结构体是否可以有成员函数?( ) B
A.不可以,结构类型不支持成员函数
B.可以有
C.不可以,只有类允许有成员函数
解析:
A.C语言结构体不支持成员函数,但C++结构体支持,其class与struct本质没有区别,唯一区别 在于默认时class的访问属性为私有,struct为公有
B.正确
C.C++结构体也支持成员函数
下列有关this指针使用方法的叙述正确的是( )D
A.保证基类保护成员在子类中可以被访问
B.保证基类私有成员在子类中可以被访问
C.保证基类公有成员在子类中可以被访问
D.保证每个对象拥有自己的数据成员,但共享处理这些数据的代码
解析:
A.基类保护成员在子类可以直接被访问,跟this无关
B.基类私有成员在子类中不能被访问,跟this无关
C.基类共有成员在子类和对象外都可以直接访问,跟this无关
D.this指针代表了当前对象,能够区分每个对象的自身数据,故正确
下面描述错误的是( ) C
A.this指针是非静态成员函数的隐含形参.
B.每个非静态的成员函数都有一个this指针.
C.this指针是存在对象里面的.
D.this指针可以为空
解析:
A.静态成员函数没有this指针,只有非静态成员函数才有,且为隐藏指针
B.非静态成员函数的第一个参数就是隐藏的this指针
C.this指针在非静态的成员函数里面,对象不存在,故错误
D.单纯的对this赋空是不可以的,不过可以强转直接赋空,不过一般不进行这样的操作