• C++知识点(容易遗忘点)


    C++知识点(容易遗忘点)

    什么是命名空间?作用是什么?

      为了解决相同作用域下的命名问题,在C、C++、C#等语言中,都有命名空间的概念,这是为了防止不同人编写类库发生命名冲突而设计的,命名空间可以使变量、函数名称、类命名作用在本空间内,而其它空间可以使用同样的名称。

    内联函数是什么?有什么注意事项。

    • 内联函数建议编译器采用,编译器可以不接受。
    • 内联函数是空间换时间。
    • 内联函数声明和定义必须一起,否则无效。
    • 在类的内部定义的函数默认是内联函数。
    • 如果你不添加内联关键字,编译器也可以自动转换为内联。

    C语言中的const和C++中const的区别?

    • 在C中const是一个只读的变量,在C+中是一个常量,可以当作数组长度使用。
    • C++中const声明的变量不占内存,在C中const需要开辟内存。

    声明和定义有什么区别?

    • 变量在发使用前必须被定义或者声明。
    • 在一个程序中,变量只能被定义一次,却可以声明多次。
    • 定义分配存储空间,而只声明不分配存储空间。

    main函数执行之前,会有其它代码执行吗?如果有,有哪些?

    • 全局对象的构造函数总是在main函数之前执行。
    • 类对象的静态成员函数初始化会在main函数之前执行。

    简述Debug版本和Release版本的区别?

    参考文章:https://blog.csdn.net/qq_39382769/article/details/102830571

    • Debug版本为调试版本,Release版本为发行版本。

    • Debug版本包含调试信息,通过一系列编译选项的配合,编译的结果包含调试信息,而且不做任何优化,以便为开发人员提供强大的应用程序调试能力。

      Debug模式下生成两个文件:除了*.exe文件或者*.dll文件之外,还有一个*.pdb文件,该文件记录了代码中断点等调试信息。

    • Release版本是为用户使用的,一般客户不允许在发布版本上进行调试,所以不保存调试信息,同时它往往进行各种优化,以期达到代码最小和速度最优,为用户的使用提供便利。

    • Debug程序通常要比Release程序要慢,尤其是处理视频方面Release要比Debug快很多,在Release模式对程序进行调试的时候经常遇到变量虽然初始化了,但是在查看其值的时候却发现是一个随机值而不是初始化值,有时候对变量进行监视的时候,会出现找不到变量的情况,原因大致如下

      Debug跟Release在初始化时所做的操作是不同的,Debug是将每个字节都赋值为0xcc,而Release的赋值接近于随机,如果你的程序中某个变量没有初始化就被引用,就很有可能出现异常;比如控制变量异常将导致程序流程不一致,用作数组下标将会使得程序崩溃,所以在声明变量后马上对其初始化一个默认的值是最简单有效的方法,在Debug模式下可能会忽略而不被察觉,debug下数组越界也大多不会有错,在Release中就暴露出来了。

    • 只有Debug模式下才能设置断点,单步执行,使用TRACE/ASSERT等调试输出语句,Release不包含任何调试信息,所以体积小,运行速度快。

    在类内部定义为成员函数的函数体,这种函数具备哪种属性?

      这种函数会自动为内联函数,这种函数在函数调用的地方编译阶段都会进行代码替换。

  • 相关阅读:
    TCK、TMS、TDI、TDO的含义
    基于ssm水果销售管理系统
    黑白简约个人网页制作 大学生个人网页设计模板 学生个人博客网页成品 简单个人网站作品下载 静态HTML CSS个人网页作业源代码
    linux日常常用命令
    7.20 SpringBoot项目实战【图书详情-学生端】:图书信息 + 评论列表 + 是否收藏
    微信支付及支付回调
    2023沈阳师范大学计算机考研信息汇总
    【LeetCode】Day175-解析布尔表达式
    systemverilog学习 随机化数组
    首次认定20万!2022年武汉市汉阳区高新技术企业认定材料、条件和奖励补助
  • 原文地址:https://blog.csdn.net/qq135595696/article/details/124992179