C++几道简单笔试题概念

 值类型和引用类型

 

值类型

引用类型

存储方式

直接存储数据本身

存储的是数据的引用,数据存储在数据堆中

内存分配

分配在栈中的

分配在堆中

效率

效率高,不需要地址转换

效率较低,需要进行地址转换

内存回收

使用完后立即回收

使用完后不立即回收,而是交给GC处理回收

赋值操作

创建一个新对象

创建一个引用

类型扩展

不易扩展,所有值类型都是密封(seal)的,所以无法派生出新的值类型

具有多态的特性方便扩展

实例分配

通常是在线程栈上分配的(静态分配),但是在某些情形下可以存储在堆中

总是在进程堆中分配(动态分配)

值类型的变量赋值只是进行数据复制,创建一个同值的新对象,而引用类型变量赋值,仅仅是把对象的引用的指针赋值给变量,使它们共用一个内存地址。
值类型数据是在栈上分配内存空间,它的变量直接包含变量的实例,使用效率相对较高。而引用类型数据是分配在堆上,引用类型的变量通常包含一个指向实例的指针,变量通过指针来引用实例。
引用类型一般都具有继承性,但是值类型一般都是封装的,因此值类型不能作为其他任何类型的基类。

 引用和指针的区别是:

引用总是指向一个对象,指针可能不指向对象;引用不能用const修饰,而指针可以;引用创建时必须初始化,而指针则可以在任何时候被初始化

C++中的友元函数说法正确的是:友元函数是不能被继承的;友元函数没有this指针

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值