- 2024-11-06c++ noexcept用法
noexcept 是C++中的一种关键字,用于指定一个函数在执行时不会抛出异常。这一关键字可以提高代码的安全性,并允许编译器进行额外的优化。具体来说:函数不会抛出异常:当一个函数被声明为 noexcept 时,表示该函数在任何情况下都不会抛出异常。如果函数实际抛出异常,将导致程序直接调
- 2024-11-01C++多线程:atomic
在许多为了性能和效率的场景下,需要开发一些lock-free的算法和数据结构atomic_flag原子布尔类型,只支持test-and-set和clear操作构造函数atomic_flag()noexcept=default;atomic_flag(constatomic_flag&)=delete;只有默认构造函数,而不能从其他对象构造atomic_flag对象需
- 2024-10-31CPP异常处理之noexcept函数类型
ExceptionspecificationsandnoexceptinCPPLookingatatypicalfunctiondeclaration,itisnotpossibletodeterminewhetherafunctionmightthrowanexceptionornot:intdoSomething();//canthisfunctionthrowanexceptionornot?Intheaboveex
- 2024-10-06C++ explicit&noexcept关键字
C++explicit&noexcept关键字explicit关键字在C++中,explicit关键字用于避免编译器在特定情况下进行隐式类型转换。它主要作用于构造函数和转换函数,防止不必要或意外的类型转换发生,从而提高代码的安全性和可读性。1.作用于构造函数当一个构造函数只接受一个参数时,它通常会
- 2024-07-09C++ 保障异常安全的手段和措施
在C++中,保障异常安全是编写健壮、可靠代码的重要方面。异常安全确保程序在遇到异常时能够正确处理,不会导致资源泄露或数据不一致等问题。以下是一些保障C++异常安全的手段和措施:1.RAII(资源获取即初始化)RAII是一种在C++中广泛使用的资源管理技术,它通过对象的构造函数获取
- 2024-07-06C++初学者指南-3.自定义类型(第一部分)-异常
C++初学者指南-3.自定义类型(第一部分)-异常文章目录C++初学者指南-3.自定义类型(第一部分)-异常简介什么是异常?第一个示例用途:报告违反规则的行为异常的替代方案标准库异常处理问题和保证资源泄露使用RAII避免内存泄漏!析构函数:不要让异常逃脱!异常保证无抛出异常保
- 2024-06-08C++ -- noexcept关键字
C++--noexcept关键字noexcept关键字作用:告诉编译器,函数中不会发生异常,有利于编译器对程序做出更多的优化,比如避免生成处理异常的额外代码,减少程序的大小例子声明了noexcept和没有声明的同一段代码:safeDivide当除数为0时,会直接调用std::terminate()来中止程序而不是throw
- 2024-03-27C++面向对象整理(10)之异常与捕获(try、catch、throw、noexcept)
C++面向对象整理(10)之异常与捕获(try、catch、throw、noexcept)注:整理一些突然学到的C++知识,随时mark一下例如:忘记的关键字用法,新关键字,新数据结构C++的异常的捕获C++面向对象整理(10)之异常与捕获(try、catch、throw、noexcept)一、异常与捕获1、C++异常处理关键字:try,
- 2024-03-25std::atomic 使用
std::atomic(原子变量)参考文章包括:C++原子变量atomic详解-知乎(zhihu.com)C++中的原子变量(std::atomic)使用指南_std::atomic-CSDN博客cplusplus.com/reference/atomic/atomic/原子变量是C++11中用于多线程编程的便捷工具(同步机制)之一.其提供了一种线程安全的方式来
- 2024-03-10实现一个简单的 std::unique_ptr
实现一个简单的std::unique_ptr简介std::unique_ptr是一个独占资源所有权的智能指针,通过RAII来自动管理资源的构造和析构。在标准库中,std::unique_ptr的通常实现是具有空基类优化。具体来讲,对于std::unique_ptr的删除器是其类型中的一部分,如果没有空基类优化,那么std::u
- 2023-11-05C++语法——noexcept 关键字
noexcept问题在数据库项目CMU15445中的Project#2中,有以下一个构造函数的实现:BasicPageGuard(BasicPageGuard&&that)noexcept;这里为什么选择加noexcept?解释关键字noexcept在C++中用来指定一个函数不会抛出异常。在函数声明后使用noexcept表明该函数保证不会
- 2023-08-17python3 安装clickhouse_sqlalchemy(greenlet) 失败
环境信息:centos7操作系统,python3.8执行pip3installclickhouse_sqlalchemy或者pip3installgreenlet报以下报错:Command"/opt/python3.6.10-customized/bin/python3.6-u-c"importsetuptools,tokenize;file='/tmp/pip-install-wbyi43ip/greenlet/setup.py';f=g
- 2023-07-13现代C++(Modern C++)基本用法实践:N、其他零散的常用特性
概述这一篇简单介绍一些其他的比较实用的特性,如果读者想了解现代C++的全部特性,参考:cppreference其他特性预置和弃置函数default&delete在C++11中引入了default和delete关键字,允许程序员更加明确地控制类的默认操作(如默认构造函数,拷贝构造函数,拷贝赋值运算符,析构函数等)
- 2023-04-08C++ 并发编程实战 第二章 线程管控
第二章线程管控std::thread简介构造和析构函数///默认构造///创建一个线程,什么也不做thread()noexcept;///带参构造///创建一个线程,以A为参数执行F函数template<classFn,class...Args>explicitthread(Fn&&F,Args&&...A);///拷贝构造(不可用)thread
- 2023-03-14c++ noexcept与constexpr解析
文章目录1.noexcept无需抛出异常2.constexpr静态编译关键字编译期常量类中constexpr1.noexcept无需抛出异常在C++中使用noexcept来标识
- 2023-03-03[C/C++] noexcept:承诺函数不抛出异常
noexcept是新标准(C++11)引入的,其作用是我们承诺一个函数不抛出异常。标准库知道我们的函数不会抛出异常,就不会认为“函数可能会抛出异常”,而为这种可能性做一些额外的工作;
- 2023-01-09C++ std::function 实现原理
msvc预备知识参数类型,可以分为一元(unary)和二元(binary),这个概念很重要,gcc的实现里也用到。可以看到msvc里定义了三个_Arg_types:无参数类型;接受一个参数,一元;接受两个参
- 2022-10-14C++11 中的 noexcept
关键字noexcept用于指出函数不会引发异常,它也可用作运算符,判断操作数(表达式)是否可能引异常:如果操作数可能引发异常,则返回false,否则返回tue。例如,请看下面的声明:
- 2022-09-28C++11:noexcept修饰符、nullptr、原生字符串字面值
noexcept修饰符voidfunc3()throw(int,char)//只能够抛出int和char类型的异常{//C++11已经弃用这个声明throw0;}voidBlockThrow()throw()//代表此函数不能抛