C++ 的一些基础知识

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

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

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

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

2. 第一个程序(Hello World)

#include <iostream>          // 标准输入输出头文件

int main()                   // 程序入口函数
{
    std::cout << "Hello, World!" << std::endl;   // 输出 + 换行
    // 或使用 using namespace std; 后可写成 cout << "Hello, World!" << endl;

    return 0;                // 返回 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. 变量初始化方式(强烈推荐现代写法)

int a = 10;           // C 风格
int b(10);            // 构造函数风格
int c{10};            // 统一初始化(C++11 起,最推荐)
int d{};              // 零初始化
auto e = 3.14;        // 类型自动推导

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

int a = 10;

// 指针
int* p = &a;      // 可改指向,可为空
*p = 20;          // 修改 a
p = nullptr;      // 可以指向空

// 引用(必须初始化,不能改指向)
int& r = a;       // r 是 a 的别名
r = 30;           // 修改 a
// int& r2;       // 错误!引用必须初始化

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

const int a = 10;           // 常量,不可改
constexpr int square(int x) { return x * x; }  // 编译期计算
constexpr int b = square(5);                   // 编译期得到 25

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

// 范围 for 循环(C++11,非常常用)
int arr[] = {1, 2, 3, 4};
for (int x : arr) {
    std::cout << x << " ";
}

// auto + 范围 for
for (auto x : arr) { ... }

// 传统 for 也可以写成更现代的样子
for (size_t i = 0; auto x : arr) { ... }  // C++20 if init

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

// 默认参数
void print(int x = 0, int y = 0);

// 函数重载
void print(int);
void print(double);
void print(const char*);

// 引用传参(推荐)
void swap(int& a, int& b);

// inline + constexpr 函数
inline constexpr int max(int a, int b) { return a > b ? a : b; }

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

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

简单例子:

class Animal {
public:
    virtual void speak() const = 0;   // 纯虚函数 → 抽象类
    virtual ~Animal() = default;      // 虚析构函数(非常重要!)
};

class Dog : public Animal {
public:
    void speak() const override {
        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 智能指针)

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

文章已创建 4549

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部