随笔分类 -  C++

【转】标准C++类std::string的内存共享和Copy-On-Write技术
摘要:1、 概念 Scott Meyers在《More Effective C++》中举了个例子,不知你是否还记得?在你还在上学的时候,你的父母要你不要看电视,而去复习功课,于是你把自己关在房间里,做出一副正在复习功课的样子,其实你在干着别的诸如给班上的某位女生写情书之类的事,而一旦你的父母出来在你房间要 阅读全文

posted @ 2018-03-03 22:26 AlanTu 阅读(1362) 评论(0) 推荐(0) 编辑

Inside i++
摘要:i++、++i、i=i+1、效率怎么样?看过一本书上说,i++比i=i+1好的地方是因为i=i+1中的那个1要占用一个寄存器,所以速度没有i++快,于是我想验证一下。另外,以前听说过Java中的“i=i++”得不到正确结论,也就是应该是“先累加再赋值”,但Java经过这种运算后,i值居然没有变化。所 阅读全文

posted @ 2018-03-03 22:23 AlanTu 阅读(212) 评论(0) 推荐(0) 编辑

用C写有面向对象特点的程序
摘要:比如在一个项目中,有大量的数据结构,他们都是双向链表,但又想共用一套对链表的操作算法,这怎么做到呢,C中又没有C++中的继承,不然我可以继承一父(类中只有两个指针,一个向前一个向后),而其算法可以写在你类中的虚函数中,供子类使用。如: class Links{public: Links* back; 阅读全文

posted @ 2018-03-03 22:22 AlanTu 阅读(171) 评论(0) 推荐(0) 编辑

JDK里的设计模式
摘要:下面是JDK中有关23个经典设计模式的示例,在stakeoverflow也有相应的讨论: http://stackoverflow.com/questions/1673841/examples-of-gof-design-patterns Structural(结构模式) Adapter: 把一个接 阅读全文

posted @ 2018-03-03 21:40 AlanTu 阅读(445) 评论(0) 推荐(0) 编辑

C/C++返回内部静态成员的陷阱
摘要:在我们用C/C++开发的过程中,总是有一个问题会给我们带来苦恼。这个问题就是函数内和函数外代码需要通过一块内存来交互(比如,函数返回字符串),这个问题困扰和很多开发人员。如果你的内存是在函数内栈上分配的,那么这个内存会随着函数的返回而被弹栈释放,所以,你一定要返回一块函数外部还有效的内存。 这是一个 阅读全文

posted @ 2018-03-03 21:38 AlanTu 阅读(198) 评论(0) 推荐(0) 编辑

如何学好C、C++语言
摘要:如何学好C语言 有人在酷壳的留言版上询问下面的问题 keep_walker : 今天晚上我看到这篇文章。 http://programmers.stackexchange.com/questions/62502/small-c-projects 我也遇到了和提问的老外一样的问题。。能给像遇到这样烦恼 阅读全文

posted @ 2018-03-03 21:26 AlanTu 阅读(243) 评论(0) 推荐(0) 编辑

“21天教你学会C++”
摘要:下面是一个《Teach Yourself C++ in 21 Days》的流程图,请各位程序员同仁认真领会。如果有必要,你可以查看这个图书以作参照:http://www.china-pub.com/27043 看完上面这个图片,我在想,我学习C++有12年了,好像C++也没有学得特别懂,看到STL和 阅读全文

posted @ 2018-03-03 21:23 AlanTu 阅读(538) 评论(0) 推荐(0) 编辑

编程修养(三)
摘要:23、static的使用————————static关键字,表示了“静态”,一般来说,他会被经常用于变量和函数。一个static的变量,其实就是全局变量,只不过他是有作用域的全局变量。比如一个函数中的static变量: char*getConsumerName(){ static int cnt = 阅读全文

posted @ 2018-03-03 21:20 AlanTu 阅读(151) 评论(0) 推荐(0) 编辑

编程修养(二)
摘要:11、出错信息的处理—————————你会处理出错信息吗?哦,它并不是简单的输出。看下面的示例: if ( p == NULL ){ printf ( "ERR: The pointer is NULL/n" ); } 告别学生时代的编程吧。这种编程很不利于维护和管理,出错信息或是提示信息,应该统一 阅读全文

posted @ 2018-03-03 21:19 AlanTu 阅读(178) 评论(0) 推荐(0) 编辑

编程修养(一)
摘要:什么是好的程序员?是不是懂得很多技术细节?还是懂底层编程?还是编程速度比较快?我觉得都不是。对于一些技术细节来说和底层的技术,只要看帮助,查资料就能找到,对于速度快,只要编得多也就熟能生巧了。 我认为好的程序员应该有以下几方面的素质: 1、有专研精神,勤学善问、举一反三。 2、积极向上的态度,有创造 阅读全文

posted @ 2018-03-03 21:18 AlanTu 阅读(272) 评论(0) 推荐(0) 编辑

typedef那回事儿
摘要:typedef是一种特殊的声明方式,不过它与普通声明(详见这里)的含义取大不相同。普通声明的主角是“变量”,它或是创建一个新变量或是对外文件变量使用前的声明;而typedef声明的主角则是“类型”,通过这个声明对一种数据类型引入新的名字。从引入新名字这个角度来说,typedef声明又和宏定义有些相似 阅读全文

posted @ 2018-02-28 12:01 AlanTu 阅读(430) 评论(0) 推荐(0) 编辑

声明那回事儿
摘要:C语言中的变量声明是让程序员比较苦恼的一件事,因为过多的优先级规则使得阅读声明并不能像自然方式那样从左至右的阅读。比如下面这个声明: int (*(*fun)())(); 对于这个声明,你能准确说出它的含义吗?这个声明涉及到本文的两大主题:什么是声明和声明的阅读规则。本文的最后将给出这个声明的准确含 阅读全文

posted @ 2018-02-28 11:53 AlanTu 阅读(147) 评论(0) 推荐(0) 编辑

C语言中的指针和数组
摘要:下面的内容节选自由我所执笔的会议记录。对于本文的不足之处,各位可以提出自己的看法。 Q1:指针和数组到底是怎么一回事? A:指针和数组有本质的不同。指针就是一个内存地址,在32位系统下,一个指针永远占4个字节;数组是一块连续的内存空间,我们从一个已定义的数组中可以获得数组大小以及这块连续内存空间的起 阅读全文

posted @ 2018-02-28 11:47 AlanTu 阅读(288) 评论(0) 推荐(0) 编辑

C语言笔记本
摘要:在此记录一些常见的C语言错误,可以当作学习C语言的笔记,需要的时候可以回过头看看。 1.关于“++” 关于自加自减运算符用于句话就可以总结:a++先使用后自加,++a先自加再引用。这样就可以轻松得出结果: 2.交换变量 第一种方法即中间变量法,下面说明第二种,不添加中间变量: 3.char* str 阅读全文

posted @ 2018-02-28 11:44 AlanTu 阅读(423) 评论(0) 推荐(0) 编辑

西邮Linux兴趣小组纳新笔试试题
摘要:下面是西邮Linux小组今年纳新的笔试试题 1、 下面这个程序的输出结果是什么? int main() { int a = (1, 2); printf(“a = %d\n”, a); return 0; } 解答: a = 2 这里利用了逗号表达式。 2、下面这个程序的输出结果是什么? struc 阅读全文

posted @ 2018-02-28 11:40 AlanTu 阅读(363) 评论(0) 推荐(0) 编辑

虚析构函数? vptr? 指针偏移?多态数组? delete 基类指针 内存泄漏?崩溃?
摘要:五条基本规则: 1、如果基类已经插入了vptr, 则派生类将继承和重用该vptr。vptr(一般在对象内存模型的顶部)必须随着对象类型的变化而不断地改变它的指向,以保证其值和当前对象的实际类型是一致的。 2、在遇到通过基类指针或引用调用虚函数的语句时,首先根据指针或引用的静态类型来判断所调函数是否属 阅读全文

posted @ 2018-02-26 09:19 AlanTu 阅读(900) 评论(1) 推荐(0) 编辑

详解 boost 库智能指针(scoped_ptr<T> 、shared_ptr<T> 、weak_ptr<T> 源码分析)
摘要:一、boost 智能指针 智能指针是利用RAII(Resource Acquisition Is Initialization:资源获取即初始化)来管理资源。关于RAII的讨论可以参考前面的文章。在使用boost库之前应该先下载后放在某个路径,并在VS 包含目录中添加。下面是boost 库里面的智能 阅读全文

posted @ 2018-02-26 09:13 AlanTu 阅读(835) 评论(0) 推荐(0) 编辑

容器适配器(stack、 queue 、priority_queue)源码浅析与使用示例
摘要:一、容器适配器 stack queue priority_queue stack、queue、priority_queue 都不支持任一种迭代器,它们都是容器适配器类型,stack是用vector/deque/list对象创建了一个先进后出容器;queue是用deque或list对象创建了一个先进先 阅读全文

posted @ 2018-02-26 09:09 AlanTu 阅读(326) 评论(0) 推荐(0) 编辑

迭代器适配器{(插入迭代器back_insert_iterator)、IO流迭代器(istream_iterator、ostream_iterator)}
摘要:一、迭代器适配器 反向迭代器 插入迭代器 IO流迭代器 其中反向迭代器可以参考以前的文章。 二、插入迭代器 插入迭代器实际上是一个输出迭代器(*it=; ++) back_insert_iterator back_inserter front_insert_iterator front_insert 阅读全文

posted @ 2018-02-26 09:07 AlanTu 阅读(1620) 评论(0) 推荐(0) 编辑

函数适配器bind2nd 、mem_fun_ref 源码分析、函数适配器应用举例
摘要:一、适配器 三种类型的适配器: 容器适配器:用来扩展7种基本容器,利用基本容器扩展形成了栈、队列和优先级队列 迭代器适配器:(反向迭代器、插入迭代器、IO流迭代器) 函数适配器:函数适配器能够将仿函数和另一个仿函数(或某个值、或某个一般函数)结合起来。 针对成员函数的函数适配器 针对一般函数的函数适 阅读全文

posted @ 2018-02-26 09:03 AlanTu 阅读(238) 评论(0) 推荐(0) 编辑

导航