• C++ 基础知识 (一)


    1. const 可以提高效率, 编译器通常不为普通 const 常量分配存储空间, 而是将它们保存在符号表中, 这使它成为编译期间的一个常量, 存取不需要内存操作, 所以效率比较高

     

    2. volatile 关键字. 用于多线程程序中, 一个定义为 volatile 的变量是说这个变量可能会被意想不到的改变, 这样编译器就不会去假设这个变量的值了. 使用 volatile 修饰的变量, 编译器不会对其进行优化, 每次读取时都会去内存中读

     

    3. ASSERT() 断言. 用于 ASSERT(n != 0) 表示当 n == 0 时程序会退出,

     

    4. int main(int argc, char** argv)

    argc 是输入命令的条数, argv 存储命令

     

    5. new/delete malloc/free 的区别

    5.1 都可以动态分配和回收空间

    5.2 new 是类型安全的, int *p = new float[2] 是错误的, malloc 检测不出

    5.3 new 调用构造函数, delete 调用析构函数

    5.4 malloc/free 需要库文件 stdlib.h 支持

     

    6关键字 explicit 的作用. 明确指出禁止隐式转换.

     

    7. strlen sizeof

    strlen("") -> 0

    sizeof("") -> 2

     

    8. 引用和指针的区别

    8.1指针可以为空, 引用必须指向某个值

    8.2 指针可以重新赋值, 引用不可以

    8.3 指针和引用都可以用于面向对象的多态

    8.4 指针使用前需要判断是否为空, 引用不需要

    8.5 引用由指针实现

     

    9. typedef define 的区别

    9.1 typedef 支持类型检查, 增加可读性

    9.2 作用于不同, define 是全局的, typedef 有作用域

     

    10. struct union

    typedef union {double i; int k[5], char c;} DATE

    struct {int cat; DATE cow; double dog;} too;

    int 4 自己, double 8 字节, union 也需要对齐, 所以 DATE 需要 24 字节

    too 的大小也按 8 字节对齐, 所以 too 40 字节

     

  • 相关阅读:
    CentOS下安装nginx并且升级nginx到最新版
    简单配置nginx使之支持pathinfo
    php设置和获取cookie
    div不能被点击设置
    设置CentOS里的Mysql开启客户端远程连接
    leetcode
    background-image中url找不到路径,背景图像无法显示
    0x3F3F3F3F——ACM中的无穷大常量
    HDU 5114 Collision
    HDU 5113 Black And White
  • 原文地址:https://www.cnblogs.com/zhouzhuo/p/3668677.html
Copyright © 2020-2023  润新知