堆和栈
区别 项目 栈(Stack) 堆(Heap) 存储位置 内存中的一块连续区域,由编译器自动分配与释放 内存中的一块较大空间,由程序员手动申请与释放(如 new / delete) 分配管理 编译器自动管理 程序员或...
区别 项目 栈(Stack) 堆(Heap) 存储位置 内存中的一块连续区域,由编译器自动分配与释放 内存中的一块较大空间,由程序员手动申请与释放(如 new / delete) 分配管理 编译器自动管理 程序员或...
decltype是C++引入的一个关键字,用来在编译期推导表达式的类型,而不实际求值。 常用于模板编程、泛型代码中,用来获取变量或表达式的精确类型 基本语法 decltype(表达式) 作用:返回表达式的类型,仅查询,并不会对表达式进行求值 基本示例 int x = 10; decltype(x) y = 20; // y的类型是int 等价于 int y = 20; ...
枚举类enum class C++的枚举类(enum class)是一个在C++11引入的重要特性,用于替代传统的枚举,主要是为了让枚举类型更加安全、明确、可控 语法 enum class Color { Red, Green, Blue }; 与传统枚举对比 特性 传统 enum enum class(强类型枚举) ...
概述 友元提供了一种非成员函数或者其他类,访问另一个类中的私有或保护成员的方法。 友元分为: 友元函数:普通函数访问某个类中的私有或保护成员 友元类:类A中的成员函数访问类B中的私有或保护成员 友元成员函数:某个类的特定成员可以访问另一个类的私有或保护成员 友元的存在提高了程序的运行效率,但是破坏了类的封装性和数据透明性 友元函数 在类声明的任何区域中声明,但是定...
explicit关键字用于防止编译器进行隐式类型转换,主要用于构造函数和类型转换运算符,目的是避免意外的类型自动转换,提高代码的安全性和可读性 基本作用 #include <iostream> using namespace std; class A { public: A(int x) { cout << "A(int) called\n"; } };...
C++与C的结构体区别 对比项 C 语言中的 struct C++ 中的 struct 定义目的 用来聚合不同类型的数据(数据集合) 除了聚合数据,还能定义行为(方法、构造、继承等) 使用方法 定义变量时必须添加struct关...
作用 extern用来声明一个在别的地方定义的变量或函数 它不会创建新的对象或函数实体,只是告诉编译器它的定义存在于别的源文件中 使用 int count = 42; // 定义全局变量 #include <iostream> extern int count; // 声明这个变量在别的文件中定义 int main() { std::cout <&...
C++位域(Bit Field)是一种允许在结构体(struct)或联合体(union)中以位为单位分配存储空间的特性,用来节省内存或实现与硬件寄存器的精准映射 基本语法 strcut Example { unsigned int a : 3; // a占3位 unsigned int b : 5; // b占5位 unsigned int c : 8; // c占8位 } 在...
volatile是一个类型修饰符,作用是告诉编译器: 这个变量的值随时可能被外部因素改变(不是由当前代码逻辑控制),因此 编译器不要对它进行优化,每次使用时都必须从内存中重新读取,而不是使用寄存器或缓存的值。 基本语法 volatile int x; 声明x是一个易变变量 使用场景 硬件寄存器访问 在嵌入式编程里,硬件寄存器的值可能随时由...
assert是一个运行时调试宏,定义在头文件<cassert>中 在C语言中则定义在<assert.h> 基本作用 assert(expr)会检查expr是否为真 如果expr == true,那么什么都不会发生,程序继续执行 如果expr == false,那么程序会打印错误信息,并调用abort()来终止程序 示例 #include...