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