guts的小屋
  • 首页
  • 归档
  • 分类
  • 标签

C++列表初始化

基本概念列表初始化是C++11引入的新特性,通过{}来初始化对象,其优点在于 统一的初始化语法,内置类型、数组、类和标准库容器都可以列表初始化 类型安全,可以防止窄化转换。窄化转换是指将较大的类型转换为较小的类型,这可能会导致数据的丢失。例如从double到int就是窄化的类型转换,如果用double类型列表初始化int类型的变量,会发生编译错误,而传统的=初始化则不会 应
2025-06-13
C++

C++中的类型推断

C++11中引入了auto和decltype,他们可以在编译期推导出出变量或表达式的类型,大幅简化了代码。 autoauto关键字允许编译器在编译期间自动推导出变量的类型。 1234auto a = 10; // a是int型​int i = 10;​auto b = i; // b是int型​auto d = 2.0; // d是double型 推导规则 au
2025-06-12
C++

C++构造函数

深拷贝和浅拷贝 浅拷贝 就是对变量的简单按位复制内存 在C++中,默认的拷贝构造函数制作按位复制,也就是浅拷贝 深拷贝 深拷贝除了将所有的成员变量拷贝给新对象外,对于指针等指向外部资源的成员变量,还会为新对象分配一块新的内存,将指针指向的内容也拷贝一份,这样原有对象和新对象的内存都是互相独立的,避免两个对象互相影响和double free的错误。 在C++中,深拷贝必须由程序员显式地实现
2025-06-12
C++

C++中的值类型

C++中表达式的结果有两个属性:类型和值类别(value categories),类型影响值的表示范围和所占的存储空间,值类别则影响 能否取地址和修改 引用的绑定规则 生命周期 等特性。分为以下几类 1. 左值 lvalue具有存储位置的对象,可以被修改和获取,且在表达式结束后依然存在。简单地说,能够用&取地址的就是左值。包括 函数名当我们将一个函数名作为值来使用时,它会自动转换成
2025-06-11
C++

C++中的异常处理

异常处理的基本操作C++中通过下面的三个关键字来是实现异常处理 try用于标记可能出现异常的代码块,被try标记的代码块称为保护代码 throw当在保护代码中遇到异常时,可以通过throw关键字来将异常抛出 catch跟在保护代码后面,catch关键字能够捕获throw抛出的异常,并根据异常的类型进行不同的处理 示例 12345678910111213141516171819202122232
2025-06-10
C++

C++中的引用

引用是一种特殊的变量别名机制,它 是变量的别名,既不是变量本身,也不是变量的拷贝。 在定义时必须被初始化,且一旦被绑定到一个变量上,就不能再被绑定到另一个变量上,与指针相比更加安全(但也并非完全安全,引用也依赖于绑定对象的有效性,如果绑定的对象内存被释放,则引用的行为是未定义的)。 必须被绑定到有效的对象,不能为nullptr,这就可以天然地避免空指针的问题。 操作简单。 引用的作用 作为别名
2025-06-09
C++

C++中的enum class

与enum的对比C++11之所以要引入enum class,是因为传统的enum 作用域不限范围,会造成命名空间的污染 123enum Color{black,white,red}; //black、white、red作用域和color作用域相同auto white = false; //错误,white已经被声明过了 而enum class的枚举成员默认具有强作用域,
2025-06-08
C++

C++中的const关键字

const关键字的使用const关键字可以修饰C++的内置变量、指针、自定义对象、成员函数、返回值和函数参数,以告诉编译器某些值需要保持不变的。也就是说,const关键字是在编译过程中发挥作用的。 const修饰普通类型的变量当一个变量被const修饰时,程序不能改变这个变量的值 const修饰指针变量const修饰指针变量时,情况会变复杂,有三种情况 const修饰指针指向的内容此时该指针指向
2025-06-08
C++

C++中的inline关键字

inline关键字会向编译器发出一个请求(而非命令,编译器可以选择拒绝),建议将函数体在调用点处内联展开,以减少函数的调用开销(例如栈帧的创建、参数的传递等)。 inline函数通常用于执行速度快且调用频繁的小函数 inline函数的定义通常放在头文件中 inline函数不能包含复杂的控制结构,例如循环和递归 编译器可能会忽略inline关键字,一般是 函数体较大 包含复杂逻辑 编译器的优化级别
2025-06-08
C++

C++中的内存管理

基本概念栈内存栈内存是由编译器自动管理的内存区域,用于存储局部变量、函数参数和返回地址等。栈内存的分配和释放是自动进行的: 当函数被调用时,局部变量和参数会被压入栈中 当函数返回时,这些局部变量和参数会被弹出栈并释放。栈内存的大小固定,一般为8M左右,无法动态调整。作用域一般是函数内部,函数返回时会自动释放。 分配速度快。 栈溢出栈溢出最典型的情况就是无限递归调用导致溢出,例如 1234voi
2025-06-07
C++
1234

搜索

Hexo Fluid