基础知识:C/C++区别

C和C++的区别

  • C++是C的超集

    • C是面向过程化的结构性语言
    • C++是面向对象的编程语言
  • 语言特性

    • C语言更偏向于底层,使用较为灵活,可移植性强
    • C++更偏向于上层,可扩展性强,对于大型项目往往使用C++
  • STL标准模板库

    • C++在C语言的基础上提出了STL标准模板库,函数模板等特性

static关键字的作用

  • 隐藏

    • 变量前添加static关键字,只对该变量所在的文件显示,对其他文件隐藏
  • 默认初始化为0

    • 对于变量前加static关键字,未经初始化前该变量会被自动初始化为0
  • 保持变量的持久化

    • 类的成员函数和成员变量前加static关键字,该成员将属于整个类,而非类的某个对象;无this指针,仅能访问static修饰的成员函数和变量。

static全局静态变量和局部静态变量的区别

  • 默认初始化为0

  • 作用域

    • static全局静态变量在声明它的文件之外是不可见的
    • static局部静态变量的作用域当定义在它的函数或者语句块结束时结束,但离开作用域时不会被销毁,再次调用函数时值不变。

C++中四种cast类型转换

  • const_cast

    • 用于将const转换为非const类型
  • static_cast

    • 用于所有的隐式转换,也用于上行转换(子类转为父类),父类转子类也可行但类型不安全
  • dynamic_cast

    • 既可以用于上行转换也可以用于下行转换,下行转换不成功会返回nullptr(C++11起),有安全检查
  • reinterpret_cast

    • 用于所有类型和指针之间的转换

C++中指针和引用的区别

  • 初始化

    • 指针不必初始化,引用必须初始化且只能作为同一变量的别名
  • 本质

    • 指针一般指的是某块内存的地址,通过这个地址,可以访问到这块内存
    • 引用只是一个变量的别名
  • 灵活性

    • 指针可以指向任何类型;引用只能指向一个变量
    • 指针可以为NULL;引用不可以为空

C++中智能指针原理、用法和缺陷

  • 原理

    • 智能指针是一个指针类,利用了析构函数的原理,离开作用域时释放指针对象
  • 用法

    • auto_ptr(C++98):只能用来管理单个动态创建的对象,已废弃
    • unique_ptr:拥有它所指向的对象,不可拷贝和赋值

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

C/C++面试必考必会 文章被收录于专栏

【C/C++面试必考必会】专栏,直击面试核心,精选C/C++及相关技术栈中面试官最爱的必考点!从基础语法到高级特性,从内存管理到多线程编程,再到算法与数据结构深度剖析,一网打尽。助你快速构建知识体系,轻松应对技术挑战。希望专栏能让你在面试中脱颖而出,成为技术岗的抢手人才。

全部评论

相关推荐

1 2 评论
分享
牛客网
牛客企业服务