C++ Tips(2): Regarding Const

BOOST源码笔记(2) - boost::thread之内部干将interrupt_wait     BOOST的Thread库博大精深,有很多的多线程概念在里面,今天就对其中很多call都用到的interrupt_wait的实现进行解释。首先,在BOOST文档中,有1个不得不看的概念,如下:Predefined Interruption Points The following functions are interruption points, which will throw 阅读详情

今天的内容是const. 有几点不得不说:

  1. const是compile-time的,不影响runtime.所以不会影响效率
  2. 对于传参数中用到const,  在值类型时不需要使用, 因为值类型始终会有个拷贝,所以加了const也没用, 只需要在传指针和引用时使用.
  3. 在const的对象上只能调用const的成员方法.
  4. const会加入方法的重载决议, 所以可以针对const的版本进行重载.
  5. int*隐式转const int*允许, 而const int* 隐式转int*不允许
  6. const指针仅仅保证无法通过这个指针改变指针指向的对象,而不是说那个对象不能改变.
  7. const int*  p 是说明 *p无法改变, 而不是说*p要赋给一个const.
  8. 对于const int** p, c++有额外的保证, 考虑如下代码:

 

所以int**无法隐式转为const int**(这个不同于int*), 解决这个问题的方法是把const int** 改成 const int* const*

BOOST源码笔记(1) - boost::call_once boost::call_once应用及其实现 以下是一个典型的运用call_once实现一次初始化的例子:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 #include boost/thread/thread.h 阅读详情

相关推荐

从配置文件加载顺序揭秘:为什么你的logback.xml读不到application.yml?

本文深入解析了Spring Boot中logback.xml无法读取application.yml配置的原因,揭示了Spring Boot配置加载机制与日志系统初始化的时序问题。通过对比logback.xml与logback-spring.xml的差异,提供了使用springProperty标签和系统属性传递等解决方案,帮助开发者有效解决日志配置问题。

weixin_29214335的博客 364

BOOST源码笔记(5) - 最小的代价实现同步-无锁编程,看boost中的interlocked_bit_test_and_set实现

如题,如何用最小的代价来实现同步呢,即无锁编程(主要是使用原子操作替代锁来实现对共享资源的访问保护),我们来看看下面的代码。首先,我们需要是在这个函数内部对地址x中的值进行位测试并将其对应的位置位。  这里的关键是我们必须先读出*x的值,作位或运算之后,将得到的值对*x赋值。而在多线程环境中,在读出*x后也许有另外的线程对*x进行写操作,这样在给*x赋值的时候就会把对旧的值位或的结果赋给*

daeees的专栏 4245

薄膜比拟、开口截面扭转承载力以及风电混塔水平缝张开状态下抗扭承载力推导

风电混塔水平缝张开状态下的抗扭承载力推导,从弹性力学说起

George的博客 873

BOOST源码笔记(3) - 节省内存的小技巧

 先不多说,来看段代码: struct state_data        {            unsigned shared_count:11,                shared_waiting:11,                exclusive:1,                upgrade:1,                exclusive_wait

daeees的专栏 1435

【Yolo12改进策略】MRFA 小核协同,构建巨大的感受野,同时保持高斯型分布|即插即用|ICCV2025

本文将介绍如何将 UniConvNet 论文中的核心模块——感受野聚合器集成到 Yolo12中,通过一种新颖的“小核协同”范式,在不显著增加计算开销的前提下,显著提升模型的感受野质量和检测精度。在目标检测中,模型要识别一个物体,不仅需要看到物体的局部特征,更需要理解其周围的上下文信息。传统卷积网络通过堆叠小卷积核(如 3x3)来扩大“感受野”,但这个过程缓慢且效率低下。而近期流行的大核卷积,虽然感受野大,但会破坏“距离越近、影响越大”的自然分布,且带来巨大的计算负担。MRFA 找到了一条“中间道路”:它通过

m0_47867638的博客 930

dToF直方图之美_deadtime死区时间

IMX459的死区时间可以在6ns,这个时间是什么级别,车载激光雷达激光器的光脉宽一般都在4ns以上,也就是这个时间贴近去SPAD的死区时间,这就导致了pile up会非常弱,不会有太多数量的光子计数堆积,加上某些SPAD设计,对TDC有一些更深入的考量,所以不需要去校正pile up算法。Sensor层面决定了pile up的复杂程度,如果一个dToF的SPAD一致性非常好,那么pile up校正可以简单到极致,也就是一句代码的事,比如IMX611,优秀到不需要后端去考虑校正pile up。

dream it possible 1434

Tip: 如何保证一个类只能在堆上被创建

<br />有的时候为了保证一个类的对象必须在堆上被创建, 比如当我们需要手动控制一个对象的生命周期的时候, 这个时候就必须保证这个对象是在堆上创建的, 如何保证呢, 有个小的技巧:<br /> <br />class A <br />{<br />public:<br />    void Close() {delete this; }<br />private:<br />    ~A() { ... };<br />};<br /> <br />int main()<br />{<br />    A

daeees的专栏 1105

SPICE仿真软件:Ngspice_(2).安装与配置

在Netlist文件中直接定义模型。V1 1 0 5R1 2 0 1k* Analysis库文件中可以包含多种电路元件模型和参数。

kkchenjj的博客 1585

Google C++ Convention

http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#The__define_GuardGist: 头文件:#define: ___H_. #include: 当forward declaration(for example: class A;) 够用时别再用#include了 在没有类定义的情况下(For example, only declare class Foo), 依然可用的有: 数据成员是Foo* or Foo&函数的参

daeees的专栏 1014

使用n8n搭建服务器监控系统:从Webhook到Telegram告警的完整实现

本文介绍基于n8n工作流平台搭建轻量级服务器监控系统的完整方案,通过Webhook接收监控数据、Token认证、阈值检查和Telegram告警推送,实现7x24小时自动化监控。整个系统由7个可视化节点组成,支持CPU、内存、磁盘、网络流量等多维度指标监控,告警阈值可灵活配置。相比传统的Prometheus或Zabbix方案,配置更简单、资源消耗更低,适合1-50台中小规模服务器的监控需求。实测表明从部署到上线仅需30分钟,告警响应延迟小于1秒,完全满足生产环境要求。

todoitbo的博客 1万+

一次点击跑通:用 Postman 自动获取并携带 CSRF token,测试 SAP OData 写操作

SAP OData 写操作自动化测试方案 针对 SAP Gateway OData 服务写操作中常见的 CSRF token 验证问题,本文提出了一套基于 Postman 的自动化解决方案: 问题分析:解释了 CSRF token 的验证机制及其必要性,说明手工测试效率低下的原因 解决方案: 使用 Postman 环境变量存储 token 通过脚本自动获取并传递 token 利用 Collection Runner 实现一键执行 实施步骤: 创建环境变量存储 token 第一个请求获取 token 并存入变

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 304

STL源码剖析 -- STL Alloc 的allocate和construct

STL 中的allocate调用了::operator new() -----此函数不会调用construct;同理deallocate。 而new 或者 delete则编译器会自动算出size_t 和 void *p并传给::operator new及::operator delete,然后调用construct及deconstruct 一句话::operator new/::o

daeees的专栏 987

10万+字超硬核 机器学习 笔记(面试八股)

10w字总结面试中可能用到的机器学习八股和常用算法,包括感知机(Perceptron)、多层感知机(MLP, Multi-Layer Perceptron)、支持向量机(SVM, Support Vector Machine)、K 最近邻(KNN, K-Nearest Neighbors)、朴素贝叶斯(Naive Bayes)、决策树(Decision Tree)、随机森林(Random Forest)、Bagging、Boosting、GBDT、XGBoos、LightGBM等。

haopinglianlian的博客 4658

BOOST源码笔记(6) - 无安全保证的随意转换~~~force_cast

从下面代码可以知道,用reinterpret_cast将一种类型的指针转到另外一种类型的指针是不会出现任何错误的,但是仅仅是编辑器的错误哈哈。另外,注意用引用传参,节省copy 时间么。  // general casetemplateinline Return_Type &force_cast(Argument_Type &rSrc){    return(*reinterpret_

daeees的专栏 977

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

STL源码剖析 -- 看copy的重叠区间拷贝

 在STL中,copy函数被多次重载过,当然是为了效率: 而在针对内建类型的特化版本会采用memove(), 而memove会将整个输入区别先copy下来,再进行copy,这样就不会有重叠区间copy覆盖的问题,而其他的版本的copy则要小心这个问题。

daeees的专栏 800

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

可以做non-type tamplate argument 的类型

<br /> 直接上例子:<br /> <br />    template <bool> <br />    struct StaticCheck { StaticCheck(...);}; <br />    template <> <br />    struct StaticCheck<false> {}; <br /> <br />    bool f =false;<br />    StaticCheck<f>();<br /> <br />报错: Error 1 error C2971: '

daeees的专栏 766

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

SmallObjectAllocator实作

#ifndef _ALLOC_H_#define _ALLOC_H_#pragma once#include #include "Assert.h"#ifndef NULL#define NULL 0#endifnamespace KOK{    class __CSimpleAlloc    {    public:        static void* Allocate(size

daeees的专栏 741

C++ Tips(1): Regarding Inheritance

今天起开始总结一些C++中的Tip, 首先开始的是继承.我们知道在c++中,父类中的私有函数在子类中是不可见, 这的确是正确的. 但是这个却对于virtual的方法无效.如下所示, 尽管在父类中P1,P2是私有的,但是在子类中依然可以重写这2个virtual的方法. 并且可以在子类中扩大重写方法的可见性.下面的代码描述了template design pattern, 定义一个骨架, 并且在子类中将细节的小片方法重写达到动态的目的, 同样也可保证virtual的可见性,将不能被直接访问到. #include

daeees的专栏 726

SmartPtr实作

#ifndef _KOK_SMARTPTR_H_#define _KOK_SMARTPTR_H_#pragma once#include #include #include namespace KOK{    template    class CheckAssert    {    protected:        void OnRef(const P& pointer)     

daeees的专栏 670

gcc occurs __gxx_personality

<br />try to use gcc -lstdc -o test test.cpp

daeees的专栏 639

深挖C++:类和对象(中)

(先进后出)

xys_678的博客 239

选型笔记:Type‑C 扩展坞方案评估|DP1.4 转 HDMI2.0 桥接芯片 GSV2201S@ACP

本文记录 GSV2201S 这款 DP1.4a 转 HDMI2.0 桥接芯片评估,梳理视频、HDCP、PD 集成能力,总结 Type‑C 转接 Dongle、扩展坞方案的适配边界,以及差分走线、PD 时序、HDCP 握手等高频调试问题,为 C 口视频转接方案选型提供参考。

ACP广源盛的博客 221

C++移动构造函数详解

移动构造函数是C++11引入的一种特殊构造函数,用于从临时对象(右值)"窃取"资源来初始化新对象,而不是进行昂贵的深拷贝。char* data;public:// 移动构造函数:参数是右值引用 &&// 关键:把源对象的资源置空。

拒绝AI文,努力在AI时代写出感动人心的好文章 391

ThunderKittens 深度解析:一个不基于 MLIR 的 C++ 模板 GPU DSL

Triton 是"让更多人能写 GPU kernel",ThunderKittens 是"让会写的人写得更爽"。前者用 MLIR 换易用性,后者用 C++ 模板换可控性。它们不是替代关系,而是覆盖了 GPU 编程光谱的两端。ThunderKittens 的出现,本质上是对"GPU DSL 必须基于 MLIR"这一默认假设的挑战。编译期类型系统本身就可以是一个强大的 DSL 基础设施,不需要中间 IR,不需要黑盒 pass,也能实现 tile 级抽象和零运行时开销。

Maxwell_Newton的博客 336

【C语言】字符与字符串函数

C语言中字符串为以\0结尾的字符数组,标准库函数基于此约定。本文解析字符串内存布局,详解ctype.h与string.h中字符分类、长度计算、拷贝、比较等函数的使用要点,强调长度判断与越界风险,最后通过命令行待办事项示例整合fgets、sscanf、strncpy、strcmp,展示实际应用中的关键细节。

记录在学习过程中学到的知识 343
上一篇: C++ Tips(1): Regarding Inheritance
下一篇: C++ Tips(3): Regarding Template
daeees
博客等级 码龄19年 6粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值