加餐 | 和 C 语言相比,C++ 有哪些不同的语言特性?
该思维导图由 AI 生成,仅供参考
C++ 发展简史
- 深入了解
- 翻译
- 解释
- 总结
C++语言特性概览 C++语言作为C语言的扩展,具有丰富的特性和功能。文章首先介绍了C++中的面向对象编程特性,包括类、继承、虚函数等,以及对应的代码示例。其次,文章提到了C++标准模板库(STL),介绍了STL中的常用容器类型和算法,并给出了相应的代码示例。接着,文章介绍了C++中的模板特性,包括函数模板和编译期计算,以及模板元编程的应用。此外,文章还介绍了C++中的智能指针,以及其他重要的语言功能,如列表初始化、decltype运算符、cast类型转换操作符、右值引用等。最后,文章提到了C++20标准中新增的四大特性,即Concepts、Ranges、Coroutines、Modules。总的来说,C++语言具有丰富的特性和功能,包括面向对象编程、STL、模板、智能指针等,以及不断更新的语言标准,为开发者提供了广阔的学习和探索空间。
《深入 C 语言和程序运行原理》,新⼈⾸单¥59
全部留言(2)
- 最新
- 精选
- LDxy置顶1,C++在调用C写的函数时感到很困惑,有的人说要在C函数前加上:: 有的人又说不用加可以直接调。2,在C++中包含处理C字符串的头文件,有人说包含string.h就行,有人说要包含cstring。3,智能指针是可以在频繁创建对象且对程序性能有要求的场合用吗?4,源文件的后缀名也很糊涂,命名为*.cpp, *.cc, *.hpp, *.hh, *.h的都有,到底该用哪种?5,std::this_thread::sleep_for(std::chrono::milliseconds(50))和Sleep(50)是等价的吗?
作者回复: 很棒的问题! 1. 这个问题应该取决于你的代码是怎么写的,通常来说,通过 “#include” 包含进来的 C 头文件应该是在全局作用域的,因此,调用的时候自然也是需要使用全局作用域中的那个,但实际上需不需要 “::” 则取决于你的具体调用地; 2. 这个肯定还是建议包含以 “c” 开头的这些头文件; 3. 实际上是可以使用的,但对于性能这类问题,建议还是以具体的 case 入手再进行分析,看瓶颈在哪里,而不是听到智能指针有一些性能损耗就直接放弃。就比如边界检查实际上也有开销,但大多数情况都不是影响程序性能的那 80% 的重要因素,在流水线化的处理器上根本不成问题; 4. 后缀名实际上对编译来说没有区别,选择配套的来用就行,比如 .cc 与 .hh;.cpp 与 .hpp。但混用关系也不大,可能会影响某些老的调试工具的某些功能。 5. 这两个方法的抽象层次不同,一个是语言标准库中定义的,一个是 POSIX 标准中定义的。两者可能在调用上有一定重合,比如编译器在实现 sleep_for 时可能会在底层直接调用操作系统提供的 sleep 方法。具体依编译器而定。
2022-03-1432 - ahack这一节课收获很大,印象最深刻的在于c++是c的内容的选择并增添了类的特性,除此之外还针对频繁的内存管理生产出了智能指针,再就是性能这里有封装有优化就会有性能开销,所以在某些极致的场景下没有添加任何额外开销的c性能更优秀,我这才懂了为啥马斯克说我支持rust2022-03-1511