
C++实战笔记
文章平均质量分 78
娱乐界祖师爷
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++异常类型
C++中的异常可以分为标准库异常和自定义异常两大类。以下是C++标准库中的主要异常类型:C++标准库中的异常都派生自基类 ,主要包括:基础异常类,所有标准异常的父类。表示程序逻辑错误,通常可以通过代码审查避免。表示只能在运行时检测到的错误。内存分配失败(通常由 操作符抛出)动态类型转换失败(由 抛出)对空指针使用 操作符调用空的 对象从已过期的 创建 访问不包含值的 除了标准库异常,你还可以创建自定义异常类:异常处理示例注意事项异常应该用于表示异常情况,而不是正常的控制流抛出异常会有性原创 2025-03-16 12:26:57 · 507 阅读 · 0 评论 -
std::enable_shared_from_this 的实际使用场景
这些场景的共同点是:对象需要在某处存储指向自己的智能指针,而不仅仅是原始指针,以确保在需要时对象仍然有效。std::enable_shared_from_this 提供了一种安全的方式来获取这样的智能指针,而不会破坏引用计数机制。原创 2025-03-11 00:53:18 · 340 阅读 · 0 评论 -
std::enable_shared_from_this用法
工厂函数:当使用工厂函数创建对象时,可能需要在工厂函数内部对对象进行一些初始化操作,而这些操作可能需要访问对象的成员变量或调用其他成员函数。回调函数:当一个类的成员函数被注册为回调函数,并且在回调函数中需要访问类的成员变量或调用其他成员函数时,可以使用。异步操作:在进行异步操作时,可能需要在回调函数或任务执行函数中访问对象的成员变量或调用其他成员函数。的使用场景包括回调函数、异步操作和工厂函数等情况,其中需要在类的成员函数中获取指向自身的。的主要使用场景是在需要在类的成员函数中获取指向自身的。原创 2023-11-12 20:40:58 · 567 阅读 · 0 评论 -
C++实战笔记(六)
迭代器容器一般会提供成员函数begin()/end()/cbegin()/cend().调用它们就可以得到表示两个端点的迭代器,有"c"前缀的函数返回的是常量迭代器,但具体类型最好用自动类型推导:vector<int> v = {1, 2, 3, 4, 5};anto iter1 = v.begin();auto iter2 = v.end();//全局函数,效果一样auto iter3 = std::begin(v);auto iter3 = std::end(v);原创 2022-03-06 15:24:27 · 1432 阅读 · 0 评论 -
C++实战笔记(五)
标准容器C++容器分类:顺序容器,有序容器,无序容器。所有的容器都有一个基本的特性:容器保存元素采用的是值语义,也就是说,里面存储的是元素的副本、复件,而不是引用。从这个基本的特性可以得出一个推论,容器操作元素的很大一块成本就是值的复制。所以,如果元素比较大, 或者非常多,那么操作时的复制成本就会很高,性能也就不会太好。一种解决办法就是尽量为元素实现转移构造函数和转移赋值函数,在加入容器的时候使用std::move来转移元素,降低元素复制的成本。例如:Point p; //复制成本很高原创 2022-02-28 22:29:19 · 1275 阅读 · 0 评论 -
C++实战笔记(四)
智能指针unique_ptrunique_ptr是最简单、最容易使用的智能指针之一,在声明的时候必须用模板参数指定类型,例如:unique_ptr<int> ptr1(new int(10)); //int智能指针assert(*ptr1 = 10); // 使用*获取内容assert(ptr1 != nullptr); //可以判断是否为空指针unique_ptr<string> ptr2(new string("hello")); //string智能指原创 2022-02-23 23:07:17 · 642 阅读 · 0 评论 -
C++实战笔记(三)
const/volatile关键字const表示常量,较简单的用法就是定义程序的数字、字符串常量、代替宏定义等,例如const int MAX_LEN = 1024;const std::string NAME = "meto";从C++程序生命周期的角度来看,我们就会发现它和宏定义还是本质区别的:const定义的常量在预处理阶段并不存在,直到运行阶段才出现。它叫只读变量更合适。既然它是变量,那么使用指针获取地址,再强制写入也是可以的,但这种做法破坏了常量性,绝对不提倡。下面一个原创 2022-02-18 00:50:26 · 877 阅读 · 0 评论 -
C++实战笔记(二)
final标识符C++11新增final标识符,把final用于类定义,就可以显示地禁用继承,防止有人有意或者无意创建派生类,这个标识符无论对人还是编译器,效果都很好,建议积极使用。例如:class DemoClass final //禁止任何人继承{...}final也可以用于虚函数,禁止这个虚函数再被子类重载,这样就可以更精细地控制继承类的使用:class Interface //接口类定义,没有final,可以被继承{ virtual void f() = 0;原创 2022-02-09 22:02:48 · 836 阅读 · 0 评论 -
C++实战笔记(一)
命名规范:变量、函数名和命名空间用snake_case,全局变量加"g_"前缀 自定义类名用CamelCase风格,成员函数用snake_case,成员变量加"m_"前缀。 宏和常量应当全大写,单词之间用下划线连接 尽量不要将下划线作为变量的前缀或后缀,很难识别CamelCase:驼峰命名法,分为大驼峰,小驼峰。区别为首字符是否要大小写。snake_case:用的全是小写,单词之间用下划线连接。#define MAX_PATH_LEN 256 //常量全大写int g_sys原创 2022-01-20 00:59:40 · 1067 阅读 · 0 评论