当前位置: 首页 > news >正文

C++ 八股(2)

1.函数调用的参数是以什么顺序压栈的,为什么?

从右向左压栈的。因为C, C++支持可变参函数。

可变参函数就是参数个数可变的函数,如printf()就是可变参函数

void func(int a,...){}

2.有一个函数

在main函数中通过:string s = fun(s1, s2);调用,按照代码执行顺序分析一下调用了什么构造函数和顺序,以及析构函数的调用顺序。

由于fun函数定义中没有使用&,故调用时进行拷贝构造。

  1. 拷贝构造s2
  2. 拷贝构造s1
  3. 执行string tmp = s1+s2; 拷贝构造tmp
  4. 使用tmp拷贝构造string s(如果使用临时对象拷贝构造新对象,那么临时对象就不产生了,直接构造新对象即可。

但如果是

string s;
s = fun(s1, s2);

那么临时对象就存在,并且s的构造函数是赋值构造。

析构时正好相反,先析构tmp,然后s1,然后s2,最后main函数结束析构s

3.空结构体有多大?

struct Data1{
};

对于C语言:

windows下,vs 2013 15 17 20是不允许定义空的struct结构体

linux/unix系统下,sizeof(Data)=0,因为在C语言中,struct是结构体变量,定义变量只需要内存即可,空的结构体什么也没有,无需内存。

对于C++:

windows/linux/unix系统下均为1,在C++中,struct不叫变量,而是对象,需要内存+构造,什么也没有也需要分配一块最小的内存,有了这块内存才能给构造函数的this指针传东西,才能构造,才能创建对象,这块最小的内存就是1.

struct Data3:public Data1{
};

sizeof(Data3)是多大? 也是1

struct Data2{char a1;
};

sizeof(Data2)是多大? 也是1 (此时不再按照空结构体占一个字节算,char是1个字节)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • PHP进阶:前后端交互、cookie验证、sql与php
  • SpringBoot原理解析(二)- Spring Bean的生命周期以及后处理器和回调接口
  • ssh出现Permission denied(publickey,gssapi-keyex,gssapi-with-mic).
  • 配置php-fpm服务
  • 【ffmpeg命令入门】视频剪切,倍速与倒放
  • 视图、存储过程、触发器
  • goland设置Gin框架中tmpl模板的语法提示的方法
  • Spring 循环依赖详解
  • 基于python opencv 多进程处理图像
  • 你了解你的GD32 MCU系统主频是多少吗 ?
  • 什么是反射以及反射的应用及例子
  • 14、如何⽤DDD设计微服务代码模型
  • [Armbian] 部署Docker版Home Assistent,安装HACS并连接米家设备
  • SimD~
  • 数据结构之树知识总结
  • 【翻译】babel对TC39装饰器草案的实现
  • android图片蒙层
  • HTTP--网络协议分层,http历史(二)
  • If…else
  • iOS | NSProxy
  • iOS编译提示和导航提示
  • mysql 数据库四种事务隔离级别
  • 百度小程序遇到的问题
  • 给第三方使用接口的 URL 签名实现
  • 简单基于spring的redis配置(单机和集群模式)
  • 聊聊flink的BlobWriter
  • 盘点那些不知名却常用的 Git 操作
  • 前端技术周刊 2019-01-14:客户端存储
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 我的面试准备过程--容器(更新中)
  • 异步
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 在Docker Swarm上部署Apache Storm:第1部分
  • 怎样选择前端框架
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​2020 年大前端技术趋势解读
  • #Datawhale X 李宏毅苹果书 AI夏令营#3.13.2局部极小值与鞍点批量和动量
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (3)STL算法之搜索
  • (a /b)*c的值
  • (Matlab)使用竞争神经网络实现数据聚类
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (算法)前K大的和
  • (一) springboot详细介绍
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (自用)仿写程序
  • .gitattributes 文件
  • .Net 4.0并行库实用性演练
  • .NET开源纪元:穿越封闭的迷雾,拥抱开放的星辰
  • @hook扩展分析