登录
登录 注册新账号
注册
已有账号登录
more effective c++——Item M30 代理类(二)通过代理类识别operator[]的读写操作
在我们的带引用计数的string类中对于operator\的操作可以对读写操作进行识别。 以下为添加代理类的String类的部分实现: ``` pragma once include cstring include iostream using namespace std; class String { class to be used by application de
浅谈一致性读
一 前言 MySQL 在不同的事务隔离级别下提供两种读模式 一致性读 。本文主要研究一致性读取。 二 原理概念 官方概念 1. A consistent read means that InnoDB uses multiversioning to present to a query a snapshot of the database at a point in tim
more effective c++——Item M30 代理类(一)多维数组的实现
代理类:用一个类来实现我们所需要的而 C++语言中并没有提供的东西,用户并不需要该类的具体实现 总结: 1.模板类中,输入输出操作符重载不能在模板类外部实现 2.数组类需要提供基本的操作:单参构造,拷贝构造,赋值操作,输出操作符 3.n维数组类持有n1维数组的二级指针 4.多维数组可以看作n1维数组的叠加,构造时需要先构造row个n1个维数组的指针,然后再次为这些指针分配
more effective c++——Item M29 引用计数(三)带引用计数的基类的实现
这两篇都是针对char \的实现,虽然能够正常工作,但是存在以下问题: 1.用户类仍然需要构造自己的数据结构,并对值、计数器进行操作 2.不便于移植,需要对原始的类做特定的修改,不同的数据类型需要重新设计 3.必须要有权限修改数据类的源代码,如果该类存在于lib中,则无法实现 是否可以设计一种新的类,达到引用计数的效果的同时避免上述问题,并且对用户屏蔽该类的实现?stanly li
more effective c++——Item M29 引用计数(二)带静态成员变量的rfstring类实现
这篇博客中所实现的引用计数还存在未解决的问题如何通过相同的值多次构造rfstring对象时,防止多次在堆上分配内存? 可以通过在rfstring类中添加一个static list ``` static_rfstring.h pragma once include list using namespace std; class static_rfstring { public:
more effective c++——Item M29 引用计数(一)简略的rfstring类设计和写时拷贝
引用计数的特点及作用 1. 引用计数允许多个相同值得对象共享这个值得实现 2. 引用计数可以节省空间、拷贝及析构的开销 3. 引用计数可以简化对象的追踪过程,比如在垃圾体系回收中 引用计数的简单实现: 如果要设计一个类rfstring作为string的引用计数版,则rfstring至少要包含2个成员变量:char \str,int rfcount。因此可以设计为以下形式:
effective C++——第二章:构造、析构和赋值(item11~item17)
br 条款11: 为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符 ``` 为动态内存分配的类提供拷贝构造与赋值操作符,以避免使用缺省的拷贝构造与缺省赋值操作时由于类的成员变量间的内存拷贝造成程序crash。 拷贝构造函数和赋值运算符,官方的规则是:缺省拷贝构造函数(赋值运算符)对类的非静态数据成员进行 “以成员为单位的” 逐一拷贝构造(赋值)。即,如果m是类C中类型为T的
这才是最舒服的赚钱点
今天生财日历上的这段话,是我最欣赏,最喜欢的一段话。 为什么呢?因为这段话跟我一直倡导的理念是相同的。上面所说的最舒服的赚钱点,就是我之前在公众号跟大家多次强调的一句话: 什么火,就做什么的工具。 也跟我之前多次强调的另外一句话有异曲同工之妙,那就是: 赚最想赚钱的人的钱最好赚。 这句话,虽然很绕口,但是确实真理。 那生财日历上写的是什么样的一段话呢?如下: 在任何时代的生意都很难做
[C++杂谈]:MFC中使用excel2007读写excel表格
br 环境:vs2015,excel2007,win7 64位 第一步:建立MFC工程,导入Application Range Workbook Worksheet Workbooks Worksheets ``` 最终要包含的excel服务的头文件include CApplication.h  include CRange.h  include CWorkbook.h
effective STL 读书笔记——第五章:算法
条款30:确保目标区间足够大 STL容器在被添加时(通过insert、push_front、push_back等)自动扩展它们自己来容纳新对象。但是标准STL并不总是为你进行区间的扩充当你是用了错误的迭代器时,下面这段代码存在致命的错误: ``` int transmogrify; 这个函数从x 产生一些新值 vectorint values; ... 把数据放入val
effective STL 读书笔记——第四章:迭代器
条款26:尽量用iterator代替const_iterator,reverse_iterator和const_reverse_iterator 1.四个迭代器的转换关系 ``` iterator可以转换为其他三个迭代器,const的迭代器之间可以相互转换,但const的迭代器不能转换为非const的迭代器 反向迭代器可以通过调用base来获取对应的正向迭代器 ``` 2.尽量使用iter
effective STL 读书笔记——第三章:关联容器
条款19:了解相等和等价的区别 相等:一般表示operator操作符返回true 等价:一般用于关联容器,表示两个对象x和y如果在关联容器c的排序顺序中没有哪个排在另一个之前,一般以Operator\实现,如过x和y是关联容器c,其比较函数为key_comp,则表示x和y等价的表达式如下: ``` c.key_comp;在c的排序顺序中如果x在y之前它非真,且y在x之前非真 ``
effective STL 读书笔记——第二章:vector和string
条款13:尽量使用vector和string来代替动态分配的数组 理由如下: 1. 通过vector、string代替动态分配的数组,你可以享受标准stl算法库的好处 2. 你不需要考虑何时放内存,不会存在麻烦的内存泄露问题 3. 你不需要考虑到底是用delete还是delete\,也不需要顾虑资源重复释放的问题 使用容器代替动态分配的数组可能在以下2个地方存在问题: 1. 由于STL实
effective STL 读书笔记——第一章:容器
条款1:仔细选择你的容器 常见容器: ``` 标准STL序列容器:vector、string、deque和list 标准STL关联容器:set、multiset、map和multimap 非标准序列容器:slist和rope 非标准关联容器:hash_set、hash_multiset、hash_map和hash_multimap 标准非STL容器:bitset、valarray、stack
[C++杂谈]C++遇到的坑
br 一、宏在字符串中的使用 {result} 在使用C++调用SQLITE的demon中,将宏替换写入了一个字符串中,但运行的时候与预期不一致。 先看代码: ``` define _VAR_ARG_20 char str  Target Pin; ``` br 编译无问题,运行的时候,str中的各个宏并没有被替换。第一反应是,宏是在预编译的时候进行替换的,不
< 1 ... 3 4 5 6 7 ... >