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

《effecttive C++》和一些其他C++开发的东西的学习总结(长期更新)

前言

在这里插入图片描述
话说这个真的是合法的吗,csdn有和谷歌搜索引擎和StackOverflow签署用户数据共享协议么lmfao
而且我写这篇文章过程中查资料的工作语言全程使用英文
他还贴心的翻译了一下,展现在旁边的“热度”榜上,我真的哭死

正文

本系列主要是记录面试题,以及本人感觉可以作为面试题考点的东西

为什么++a是左值而a++是右值,请从编译原理的文法分析的角度回答
答:首先看现象,++a是先加后返回,a++是先返回后加
也就是说对于编译器待分析的表达式a=++b会被化简为a=b+1而先返回后加,类似于a=b b=b+1 不能化简为一个表达式
而在不考虑常量的情况下,左值就是一个表达式或者等价于表达式的东西,b++在上下文中无法化成一个表达式,所以他是右值

//无法编译,仅供参考
int operator ++ (int& n)  // postfix increment
{
    int tmp = n; //而不是int& tmp
    n = n + 1;
    return tmp; //此时result是右值, 这里的result就是结束,就是"不变" 不过这里的"不变"需要打引号
}

int& operator ++ (int& n)
{
    n = n + 1;
    return n;//此时result是引用,是"可变",这里的"可变"也是打引号的
}

请问以下写法见过吗, 这样的写法的程序变量A暴露给用户安全吗, 在不暴露的情况下这么写有什么作用

class a{
private:
	int& b;
}

答:当初始化的时候

class a{
private:
	int& b;
}
int _b;
a myA(_b);

这样我们在外面就可以改变里面的b了, 至于是否安全,得看这个_b是否会直接或者间接的被用户的不安全输入影响, 如果只是程序员这侧可以动到_b, 那么就可以免去getB setB这类函数的开销,直接赋值就可以, 而且还受到C++ “编译时” 的关键字保护
这在不能内联的, 频繁调用的, 情况下可以大幅减少开销,属于一种较为常见的优化, 但是需要注意程序安全

待更新, 写作业去了

相关文章:

  • 登录测试用例
  • hadoop笔记——YARN部署
  • 目前全球生物识别市场规模迅速扩张,虹膜识别技术也发展迅猛
  • kafka原理解读
  • Java架构师技能点面试题汇总消息队列面试题
  • ora-00922-error-message文档
  • 1-十八烷基-3-三乙氧基丙基硅烷咪唑溴盐离子液体([ODTIm]Br)修饰Fe3O4磁性纳米颗粒
  • Android:滚动字幕
  • 美容仪器设计市场是什么行情?
  • 第九章Redis持久化
  • 申请外观设计专利多少钱?
  • Shiba Inu 生态系统:快速指南
  • 【Linux操作系统】-- 多线程(三)-- 线程池+单例模式
  • 猿创征文|docker本地私人仓库快速搭建后的安全优化(用户鉴权和简易的web界面开启)
  • 在瑞芯微 Rockchip SDK中增加自己的程序并使用CMake编译
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【RocksDB】TransactionDB源码分析
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • Android组件 - 收藏集 - 掘金
  • github指令
  • HTTP中的ETag在移动客户端的应用
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • JAVA SE 6 GC调优笔记
  • Js基础知识(四) - js运行原理与机制
  • MYSQL 的 IF 函数
  • nfs客户端进程变D,延伸linux的lock
  • Python连接Oracle
  • Sequelize 中文文档 v4 - Getting started - 入门
  • 初识 beanstalkd
  • 将 Measurements 和 Units 应用到物理学
  • 前端代码风格自动化系列(二)之Commitlint
  • 强力优化Rancher k8s中国区的使用体验
  • 人脸识别最新开发经验demo
  • 如何进阶一名有竞争力的程序员?
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 运行时添加log4j2的appender
  • 智能合约开发环境搭建及Hello World合约
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • ​​​​​​​​​​​​​​Γ函数
  • #define用法
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (007)XHTML文档之标题——h1~h6
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (27)4.8 习题课
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (二)JAVA使用POI操作excel
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (理论篇)httpmoudle和httphandler一览
  • (全注解开发)学习Spring-MVC的第三天
  • (三)uboot源码分析
  • .net CHARTING图表控件下载地址
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .Net FrameWork总结
  • .NET 指南:抽象化实现的基类