当前位置: 首页 > news >正文

C++ 极简常用内容

C++ 极简常用内容

1. 类与对象

定义:封装数据(成员变量)和行为(成员函数)的自定义类型。
Demo

class Car {
public:
    string brand;
    void drive() { cout << brand << " is moving." << endl; }
};
int main() {
    Car myCar;
    myCar.brand = "Toyota";
    myCar.drive(); // 输出: Toyota is moving.
}

何时用:表示实体(如用户、订单)或封装逻辑(如文件操作)。


2. 继承

定义:派生类复用基类的属性和方法。
Demo

class Animal {
public:
    void eat() { cout << "Eating..." << endl; }
};
class Dog : public Animal {
public:
    void bark() { cout << "Woof!" << endl; }
};
int main() {
    Dog dog;
    dog.eat();  // 继承方法
    dog.bark(); // 自身方法
}

何时用:代码复用(如多种GUI控件共享基类功能)。


3. 多态(虚函数)

定义:通过基类指针/引用调用派生类的重写函数。
Demo

class Shape {
public:
    virtual void draw() { cout << "Drawing shape." << endl; }
};
class Circle : public Shape {
public:
    void draw() override { cout << "Drawing circle." << endl; }
};
int main() {
    Shape* shape = new Circle();
    shape->draw(); // 输出: Drawing circle.
    delete shape;
}

何时用:统一接口不同实现(如游戏角色行为差异)。


4. 模板(泛型编程)

定义:编写与类型无关的代码。
Demo

template <typename T>
T max(T a, T b) { return (a > b) ? a : b; }

int main() {
    cout << max(3, 5) << endl;     // 输出: 5
    cout << max(3.14, 2.71) << endl; // 输出: 3.14
}

何时用:通用容器(如vector<T>)或算法(如排序)。


5. 智能指针

定义:自动管理动态内存,避免泄漏。
Demo

#include <memory>
class Resource {};
int main() {
    std::unique_ptr<Resource> res = std::make_unique<Resource>();
    // 离开作用域自动释放内存
}

何时用

  • unique_ptr:独占资源(如文件句柄)。
  • shared_ptr:共享资源(如缓存数据)。

6. STL 容器

核心容器

  • vector:动态数组(快速随机访问)。
  • map:有序键值对(基于红黑树)。
  • unordered_map:哈希表实现的键值对(更快查找)。

Demo

#include <vector>
#include <unordered_map>
int main() {
    vector<int> nums = {1, 2, 3};
    unordered_map<string, int> ages = {{"Alice", 25}, {"Bob", 30}};
}

何时用

  • vector:需动态扩容的数组。
  • unordered_map:快速键值查找(如缓存)。

7. RAII(资源管理)

定义:通过对象生命周期管理资源(如内存、文件)。
Demo

class FileHandler {
    FILE* file;
public:
    FileHandler(const char* path) { file = fopen(path, "r"); }
    ~FileHandler() { fclose(file); }
};
int main() {
    FileHandler fh("data.txt"); // 文件自动关闭
}

何时用:资源需自动释放(如数据库连接、锁)。


速查表

概念常用内容典型场景
类与对象封装数据和行为实体建模(如用户类)
继承class B : public A代码复用(如GUI控件继承)
多态virtual + override统一接口不同实现(如游戏角色)
模板template <typename T>泛型容器/算法(如vector<T>
智能指针unique_ptr, shared_ptr自动内存管理
STL容器vector, map, unordered_map数据存储与快速查找
RAII构造函数分配,析构函数释放文件、网络连接管理
http://www.dtcms.com/a/112272.html

相关文章:

  • 电商---part02 项目环境准备
  • 如何根据电池电流计算电池容量
  • wsl编译openwrt24.10.0
  • dbscan 检测噪声
  • Node.js中间件的5个注意事项
  • 【Java集合】单列集合List详解
  • 基于K8s的演示用单机ML服务部署
  • 26考研——线性表_ 线性表的链式表示_双循环链表(2)
  • 多表查询的多与一
  • 对 Python Websockets 库全方位详解
  • 企业安全——FIPs
  • 面试可能会遇到的问题回答(嵌入式软件开发部分)
  • 如何在 Windows 上安装 Python
  • 新旧iPhone相册复制 - 相册图片视频对拷 - 换机 - 迁移设备数据 - 免费开源爱思助手
  • 免费在线MBTI性格测试工具 - 探索你的性格特质
  • 什么是自动化测试框架?常用的自动化测试框架有哪些?
  • 2.3 MySQL基本内置函数
  • Cortex-M​ 函数调用的入栈与出栈操作
  • 【5】搭建k8s集群系列(二进制部署)之安装master节点组件(kube-controller-manager)
  • 盲盒小程序开发平台搭建:打造个性化、高互动性的娱乐消费新体验
  • 定长池的实现
  • 蓝桥杯 小明的背包1 小兰的神秘礼物 01背包问题 模板 C++
  • 财务税务域——企业税务系统设计
  • centos8上实现lvs集群负载均衡dr模式
  • 【学Rust写CAD】23 渐变效果(gradient_source.rs)
  • 【面试篇】Dubbo
  • NSSCTF [HGAME 2023 week1]simple_shellcode
  • 音视频入门基础:MPEG2-PS专题(8)——使用Wireshark分析GB28181的PS流
  • 第十二步:react
  • 如何用Python轻松实现快速复制或剪切文件列表中的所有文件呢?