c++中static的用法 static是c++中的一个关键字,其共有四种用法,下面分开进行介绍。 一、静态局部变量——在函数内部声明的静态变量使用static在函数内部修饰局部变量,可以将变量声明为静态局部变量。即使函数结束,静态局部变量的值也会保留,用于记录历史信息。 12345void count() { static int counter = 0; // 静态局部变量 counter++; 2025-09-11 语言/CPP #CPP
单例模式 本文转载小林coding的文章,可由文末参考章节进入原文阅读 线程安全什么是线程安全?在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确地执行,不会出现数据污染等意外情况。 如何保证线程安全? 给共享的资源加锁,保证每个资源变量每时每刻至多被一个线程占用。 让线程也拥有资源,不用去共享进程中的资源。如:threadlocal为每个线程维护一个私有 2025-09-07 设计模式 #单例模式
工厂模式 工厂模式的简介 工厂模式属于创建型模式,提供了一种创建对象的最佳方式。 在工厂模式中,创建对象时不会对客户端暴露创建逻辑,而是通过一个共同的接口来指向新创建的对象。 工厂模式的实现方式可分为简单工厂模式、工厂方法模式、抽象工厂模式,每个实现方法都存在优点和缺点。 以鞋厂为例,对各实现方式进行介绍。 深入浅出工厂模式(基础篇)简单工厂模式场景: 鞋厂可以指定生产耐克、阿迪达斯和李宁的鞋子。哪个鞋好 2025-09-01 设计模式 #工厂模式
模板类型推导 前言类型推导使得程序员从冗杂的类型名拼写上解放出来,本篇文章将详细介绍模型类型推导的规则。 模板类型推导的规则考虑如下函数模版: 123template<typename T>void f(ParamType param);f(expr); 在编译期间,编译器使用expr进行两个类型的推导:T和ParamType。其中,ParamType通常包含一些修饰,从而通常与T是不同的类型。T的 2025-06-14 语言/CPP #类型推导
std::move与std::forward 前言本篇文章主要介绍std::move与std::forward的实现原理。 static_cast在讲解两个函数之前,首先需要了解static_cast的作用。static_cast是C++中的一种 显式类型转换 运算符,用于在类型之间安全地进行编译期转换。其基本语法如下: 1static_cast<T>(expr) // 将expr转换为T类型 其主要用法有:(1)用于基本数据类型 2025-06-11 语言/CPP #CPP
类型推导——auto与decltype 前言编码时必须明确变量的类型会降低编码的效率,并使代码变得冗长。因此,C++提供了auto和decltype这两个关键字来实现类型的推导。 auto基本语法auto的基本语法如下: 1auto variable_name = expression; 编译器可以根据expression的类型来自动推导出variable_name的类型。 使用示例auto比较常见的用法是推导迭代起来类型的推导: 12 2025-06-09 语言/CPP #类型推导
const和constexpr详解 前言constexpr是c++11引入的关键字,其和const都是用来定义常量的,本文将详解两者的区别。 constconst一般用于修饰变量、引用、指针,标记它们为常量。然而,const并未区分编译期常量和运行期常量,只能保证变量运行时不被直接修改。 const变量,其值不能发生改变: 12const int x = 100; // 常量x = 200; // 无法通过编译 const引用,无法 2025-06-06 语言/CPP #CPP
移动构造函数与移动赋值函数 前言拷贝构造函数创建了源对象的副本,但有些时候我们并不需要进行拷贝,而只需将源对象的资源移动到目标对象,因此C++11提供了一种新的构造方法——移动构造函数。其可以减少不必要的复制,带来性能上的提升。移动赋值函数则与移动构造函数类似,其允许将源对象的资源转移到目标对象中,并更新目标对象的状态。 移动构造函数定义移动的含义为:将源对象资源的控制权全部交给目标对象。移动构造函数定义形式: 1class 2025-05-28 语言/CPP #CPP
const关键字 前言const是C++中用于指示变量值不可变(常量)的关键字,被const修饰的变量在编译时会被视为只读,尝试修改其值会导致编译错误。通过使用const可以提高代码的安全性与可读性。 const用于变量声明const关键字通常放在变量类型前面,例如: 1const int a = 10; 不过放在变量类型后面也是可以的: 1int const a = 10; 可以使用变量初始化常量,也可以将常量赋 2025-05-26 语言/CPP #CPP
extern关键字 前言extern是一个修饰变量或函数的关键字,用于说明修饰的符号具有外部链接性。通过使用extern关键字,可以引用其他源文件中的变量和函数,实现模块化编程和代码重用。 extern的用法修饰变量一般情况下,在一个源文件中定义的变量和函数只能被源文件中的函数调用,但是C++程序会有许多源文件,为了在本源文件中使用其他文件的变量,C++提供了extern关键字。在使用其他源文件中的全局变量时,只需要 2025-05-24 语言/CPP #CPP