news 2026/4/13 21:19:03

C++ 的一些基础知识

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++ 的一些基础知识

好的!下面给你整理一份C++ 基础知识的清晰概览,适合初学者快速建立知识框架,也方便后期查漏补缺。

我会从最基础的部分开始,逐步介绍 C++ 相比 C 语言增加的重要特性,以及现代 C++(C++11/14/17/20)常用基础内容。

1. C++ 是什么?(一句话总结)

C++ 是C 的超集+面向对象+泛型编程+高性能的多范式编程语言。

2. 第一个程序(Hello World)

#include<iostream>// 标准输入输出头文件intmain()// 程序入口函数{std::cout<<"Hello, World!"<<std::endl;// 输出 + 换行// 或使用 using namespace std; 后可写成 cout << "Hello, World!" << endl;return0;// 返回 0 表示正常结束}

3. C++ 非常重要的基础特性(对比 C 语言)

特性说明示例代码
命名空间解决命名冲突,std 是标准库的命名空间using namespace std;std::cout
输入输出cin/cout替代scanf/printfcin >> x; cout << x;
引用(Reference)变量的别名,比指针更安全、更直观int &r = a;
函数重载同一函数名,不同参数列表void print(int); void print(double);
缺省参数函数参数可以有默认值(从右往左)void func(int a = 10, int b = 20);
inline 函数建议编译器内联展开,小函数性能优化inline int max(int a, int b)
const 正确性更严格的常量正确性const int*/int* const/const int* const

4. 基本数据类型(C++11/14 后更丰富)

类型组常用类型字节(通常)备注
整数int,short,long,long long4/2/4/8int至少 16 位,通常 32 位
无符号unsigned int,size_t同上常用在数组下标、内存大小
字符char,wchar_t,char8_t/16_t/32_t(C++20)1/2/1/2/4char可存 ASCII 或 UTF-8
浮点float,double,long double4/8/8~16double是常用浮点类型
布尔bool1true/false
nullptrC++11 引入,空指针常量替代NULL
autoC++11 自动类型推导auto x = 3.14;→ double

5. 变量初始化方式(强烈推荐现代写法)

inta=10;// C 风格intb(10);// 构造函数风格intc{10};// 统一初始化(C++11 起,最推荐)intd{};// 零初始化autoe=3.14;// 类型自动推导

6. 指针 vs 引用(非常重要!)

inta=10;// 指针int*p=&a;// 可改指向,可为空*p=20;// 修改 ap=nullptr;// 可以指向空// 引用(必须初始化,不能改指向)int&r=a;// r 是 a 的别名r=30;// 修改 a// int& r2; // 错误!引用必须初始化

7. const 与 constexpr(现代 C++ 很常用)

constinta=10;// 常量,不可改constexprintsquare(intx){returnx*x;}// 编译期计算constexprintb=square(5);// 编译期得到 25

8. 控制流(基本一致,但更推荐现代写法)

// 范围 for 循环(C++11,非常常用)intarr[]={1,2,3,4};for(intx:arr){std::cout<<x<<" ";}// auto + 范围 forfor(autox:arr){...}// 传统 for 也可以写成更现代的样子for(size_t i=0;autox:arr){...}// C++20 if init

9. 函数相关(C++11/14/17/20 增强很多)

// 默认参数voidprint(intx=0,inty=0);// 函数重载voidprint(int);voidprint(double);voidprint(constchar*);// 引用传参(推荐)voidswap(int&a,int&b);// inline + constexpr 函数inlineconstexprintmax(inta,intb){returna>b?a:b;}

10. 面向对象三大特性快速记忆

  • 封装:把数据和操作数据的方法放到类里(private + public)
  • 继承:代码复用(public / protected / private 继承)
  • 多态:同一接口,不同实现(虚函数 + 虚析构函数)

简单例子:

classAnimal{public:virtualvoidspeak()const=0;// 纯虚函数 → 抽象类virtual~Animal()=default;// 虚析构函数(非常重要!)};classDog:publicAnimal{public:voidspeak()constoverride{std::cout<<"汪汪~\n";}};

快速学习路线建议(2025-2026 视角)

  1. 先掌握上面所有内容(大概 1–3 周)
  2. 学习STL 常用容器:vector / string / map / unordered_map / set
  3. 学会智能指针:unique_ptr / shared_ptr / weak_ptr(取代裸指针)
  4. 理解RAII思想(资源获取即初始化)
  5. 掌握lambda 表达式(超级常用)
  6. 熟悉C++11/14/17/20常用特性:auto、constexpr、range-for、structured binding、std::optional 等

你现在想深入哪个部分?
比如:

  • 更详细的指针 vs 引用 vs 智能指针
  • vector / string 常用操作
  • 类与对象(构造/析构/拷贝/移动)
  • 模板基础
  • lambda 表达式
  • 内存管理(new/delete vs 智能指针)

告诉我你的目标或想重点了解的部分,我可以继续展开~ 😄

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/11 4:55:56

day80(2.8)——leetcode面试经典150

22. 括号生成 22. 括号生成 题目&#xff1a; 题解&#xff1a; class Solution {int left; //左括号int right; //右括号List<String> res;void dfs(int l, int r, StringBuilder sb) {if(l0&&r0) {res.add(sb.toString());return ;}if(l>0) {sb.appen…

作者头像 李华
网站建设 2026/4/12 15:37:48

从零开始写算法——贪心篇2:买卖股票的最佳时间 + 划分字母区间

在算法中&#xff0c;贪心算法 (Greedy Algorithm) 往往是一个让人又爱又恨的话题。爱它是因为代码通常很短&#xff0c;恨它是因为“当前最优选择会导致全局最优”这个逻辑有时候很难一眼看穿。今天我们通过两道经典的 LeetCode 题目——121. 买卖股票的最佳时机 和 763. 划分…

作者头像 李华
网站建设 2026/4/12 6:56:56

【小程序毕设源码分享】基于springboot+小程序的汽车服务企业客户评价APP的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/3 20:01:39

【小程序毕设全套源码+文档】基于Android的地球村共享书屋平台的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/13 18:13:22

Redis Zset的实现为什么用跳表,而不用平衡树?

之前写过一篇 Redis 数据类型的底层数据结构的实现&#xff0c;其中提到&#xff0c;ZSet 对象的底层数据结构实现之一是跳表。 然后&#xff0c;有读者就问&#xff1a;为什么不使用平衡树&#xff08;如红黑树、AVL 树&#xff09;&#xff1f; 我们先来了解下跳表&#xf…

作者头像 李华
网站建设 2026/4/11 23:56:35

2026之初凭这份Java面试突击指南,斩获9张大厂Offer

今年金三银四快要到了&#xff0c;不知道大家都拿到Offer没有&#xff0c;如果没有的话&#xff0c;希望大家不要怪LZ凡尔赛了&#xff08;手动狗头&#xff09;。LZ截止今天为止已经收到了第9家公司的Offer&#xff0c;这张的Offer的话给到28k*14薪。由于个人原因&#xff0c;…

作者头像 李华