1.运算符重载的规则
1.只能重载已有的且被允许重载的运算符
2.重载之后,运算符的优先级和结合性不会改变,也不能够改变
3.重载的功能应当与原有功能相类似,不能改变原运算符的操作对象个数,同时至少要有一个操作对象是自定义类型
2.静态初始化程序会在构建函数之前执行
类中的静态成员在构造函数之前初始化
3.下列关于联合的描述中,错误的是?
A.联合变量定义时不可初始化
B.联合的成员是共址的
C.联合的成员在某一个时刻只有当前的是有效的
D.联合变量占有的内存空间是该联合变量中占有最大内存空间的成员在内存对齐时所需的存储空间
答案:A
解析:结构体和联合体都是由多个不同的数据类型成员组成,但在任何同一时刻,,联合中只存放了一个被选中的成员(所有成员共用一块地址空间),而结构的所有成员都存在(不同成员的存放地址不同)
2.对于联合体的不同成员赋值,将会对其它成员重写,原来成员的值就不存在了,而对于结构体的不同成员赋值是互不影响的
4.若有以下类T说明,则函数fFriend的错误定义是?
A.void fFriend( T &objT, int k ) { objT.i = k; }
B.void fFriend( T &objT, int k ) { k = objT.i; }
C.void T::fFriend( T &objT, int k ) { k += objT.i; }
D.void fFriend( T &objT, int k ) { objT.i += k; }
答案:C
解析:友元函数并非类的成员函数,不需要用类作用域符来标识该函数属于哪个类
5.下面有关空指针和未初始化指针,说法错误的是?
A.对0x0这个地址取值是非法的
B.空指针可以确保不指向任何对象或函数; 而未初始化指针则可能指向任何地方。
C.空指针与任何对象或函数的指针值都不相等
D.malloc在其内存分配失败时返回的是一个未初始化的指针
答案:D
解析:
空指针也就是通常指向为NULL的指针,野指针就是指向一块未知的内存区域(可以是通过malloc或new申请空间后,释放后没有将指针置为空),也有可能定义了一个指针没有初始化,由于内存空间中的值在未赋值之前是随机数,所以也有可能诞生野指针
就上面这道题目而言:
A.肯定是对的,无法为内存为0的地址取地址
B.也是对的咯
C.空指针的值肯定是NULL,也就是0,而其他指针都有对象了,有对象就有地址,有地址也就有值了,所以两个值是不可能相等的
D.malloc申请内存空间失败的时候,人家返回的值为NULL,而不是任意的
6.以下关于面向对象的描述错误的是?</