阅读前注意 本文所有代码贴出来的目的是帮助大家理解,并非是要引导大家跟写,许多环境问题文件问题没有详细说明,代码也并不全面,达不到跟做的效果。建议直接阅读全文即可,我在最后会给出详细代码地址,对源代码细节更感兴趣的同学可以下载参考。 性能测试:使用日志 在c++中进行性能测试是令人头疼的问题,我们往
分类: C++
【C++】构造函数的分类与调用
分类方式 按参数分: 有参构造(默认构造) & 无参构造 按类型分: 普通构造 & 拷贝构造 调用方式 括号法 显示法 隐式转换法 PS:下方所有文本均以此代码为基础 1 class Person { 2 public: 3 //无参构造函数 4 Person()
树论笔记
Dynamic Tree 前置知识:线段树 Splay 维护区间翻转,\(O(n)=10^6\) 显然,这样的操作不能用线段树来维护,因为线段树的结构是固定的,我们需要一种结构上更加灵活的数据结构 于是联想到平衡树,如果以,对于一个区间 \([l,r]\),我们只需要知道 \(l-1\) 和 \(r
C++默认参数及其本质
C++默认参数及其本质 1. 概述 概述 C++ 允许函数设置默认参数,在调用时可以根据情况省略实参 其规则如下 默认参数只能按照从右到左的顺序。 如果函数同时有声明、实现、默认参数只能放在函数声明中 默认参数的值可以是常量、全局符号(全局变量、函数名) 实例1:默认参数只能按照从右到左的顺序、默认
Practical usage of cpp reference and move semantic
Practical usage of cpp reference and move semantic 在优化重构一部分老代码时,实际使用 c++ 的 reference 与 move semantic 遇到了若干问题,在此记录。 Aggregation 首先,数据的设计并不复杂,只有一个类,成员变量
C++函数重载的原理
C++函数重载的原理 一、函数重载概述 1.1 为什么要有函数重载 在实际的开发中,有时候我们需要实现几个功能类似的函数,只是有些细节不同。例如希望交换两个变量的值,但是这两个变量可能有多种类型:int、char、double、bool等。在C语言中,程序员往往需要分别设计出多个不同名的函数,但是在
cloudwu/coroutine 源码分析
1 与其它协程库使用对比 这个 C 协程库是云风(cloudwu) 写的,其接口风格与 Lua 协程类似,并且都是非对称 stackful 协程。这个是源代码中的示例: #include "coroutine.h" #include <stdio.h> struct
Gtk调整widget部件大小size
原型 gtkmm void set_size_request(int width = -1, int height = -1); gtk void gtk_widget_set_size_request ( GtkWidget* widget, int width, int height ) 描述
相对完善的单例模式
相对完善的单例模式 关于单例模式相比无须赘言,但是初学设计模式的时候都难免遇到使用单例模式时没有考虑拷贝构造的问题。 这里就尝试实现几个相对完善而且有扩展性的单例模式,以供参考。 Hello World 版本 class Singleton { public: Singleton *GetInsta
关于C++异常机制使用的调查
1、从规范角度分析,一般是禁止使用C++的异常机制的。 2、要求所有的错误都应该通过错误值在函数间传递病做相应的判断,而不应该通过异常机制进行错误处理。 3、编码人员必须完全掌控自己的整个编码过程,要有攻击者思维,主动把握有可能出错的环节,尽可能的分析出程序的所有异常,增强安全编码意识。 4、使用c