136-牛客网C++刷题5

本文介绍了C++编程的一些基础知识,包括运算符重载的规则、静态初始化、联合的特性、面向对象特性如虚函数和友元函数,以及空指针和未初始化指针的区别。还探讨了构造函数、拷贝构造函数、类方法和类型安全概念,以及C++中的字符串处理和内存管理函数。
摘要由CSDN通过智能技术生成

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.以下关于面向对象的描述错误的是?</

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值