C++编程中,类内使用裸指针是极其常见也是常规用法,但是类内指针使用不当易导致崩溃。
GUID(Globally Unique Identifier,全局唯一标识符)作为一种在计算机系统中唯一标识对象的标识符,被广泛应用于数据库、操作系统、通信协议、软件组件等场景。它是由128位数字组成的,通常以字符串形式表示,例如{3F2504E0-4F8...
类型转换是C++中一种非常常见的操作,为了保证类型转换的安全性和有效性,C++提出了四种类型转换操作符,通常称之为常规转换操作符。在共享指针出来后,为实现共享指针的转换,提出共享指针支持的四种转换操作符。...
在C++编程中,模板是一种强大的工具,可以实现代码的通用性和复用性。然而,传统的模板编程经常需要显式指定模板参数,这可能会导致代码重复和可读性下降。为了解决这个问题,C++17引入了CTAD(Class Template Argument Deductio...
C++开发过程中,经常会涉及到数组作为函数的入参,数组传参过程中通常使用单个指针指向数组,但是需要同时传递数组的长度。这无疑增加传参的复杂度,为此C++20提出了新特性std::span,用于解决该问题。...
在C++编程中,PImpl(Pointer to Implementation)是一种常见的设计模式,也被称为“编译器化”的编程技巧。这个模式背后的核心思想是将类的实现细节封装在一个单独的类中,从而降低类的耦合性,提高代码的可维护性和可扩展性。...
在C++编程中,RAII(Resource Acquisition Is Initialization,资源获取即初始化)是一种重要的编程范式,被广泛应用于管理资源的生命周期。这种技术通过在对象的构造函数中获取资源,而在析构函数中以获取顺序的逆序释放资源,从...
在 C++ 编程中,我们经常需要处理各种复杂的对象类型和继承层次结构。在某些情况下,我们需要在运行时了解对象的真实类型,并根据其类型执行相应的操作。这正是 RTTI(Run-Time Type Identification)的用武之地。...
通常来讲,C++的多态存在静态多态(函数重载)和动态多态(指针或引用+虚函数表),但是C++17引入新的特性——std::variant,为多态提供了新的实现方式。同时,也为policy——based design提供了新的书写方式。...
当需要在同一块内存区域中存储不同类型的值且在任何时刻只会存储其中的一种类型时,联合体(union)总是作为首要选择,但是联合体存在如类型安全差、不支持构造函数和析构函数等缺点。为避免union存在的问题,C++17引入一个非...