摘要:
序言 《设计模式之禅》,与这本书结缘是在大三下学期,到图书馆借书的时候,看到一本很新的书,书名带个“禅”字,而当时又比较迷恋乔布斯。于是,不管它写的什么乱七八糟的内容就果断借着,拿回宿舍看。接着,放暑假期间,到金蝶实习,就把这本书带着看,怀着装逼的心态。整个实习两个月期间,这本书基本上没翻过,相反的,却把当时火起来的《山楂树之恋》给看了一遍。实习完回校,果断又把书还回去了。 今天,我已经快工作一年半了,之前每每想拿起这本书读的时候,总觉得没到火候。现在我觉得似乎到火候了,自己对设计模式有强烈的渴望,有强烈的需求。今天,拿起这本书,一定要老老实实的读完它。单一职责原则 1. 作者在讲解这一原则的 阅读全文
摘要:
其实这一点在C++的基础类入门书,如C++ primer里面也有说过,不过很少有人去注意而已,作者把这一点提出来,是为了提醒我们。这一条款的内容如下:就是说当你书写下面的【代码片段1】的时候,其实经过编译器处理后,你所书写的代码本质上是【代码片段2】:代码片段1(你亲自手写的):1 class A{2 3 };代码片段2(编译器帮你生成的):1 class A{2 public:3 A() { ... }4 A(const A& rhs) { ... }5 ~A() { ... }6 7 A& operator =(const A& rhs) { ... }8... 阅读全文
摘要:
序言 看书是一件百味陈杂的事。看小说,心思专注时,你能从别人的故事里流出自己的眼泪;看历史,仰望星空时,你能从演变的沧海桑田里发现现实的美好。看技术书籍,自己编示例程序时,你能发现自己离大牛专家的距离有多远,有时简直是天壤之别,甚至感觉自己这辈子都无法企及那样的高度。然而,我们仍不能停下自己的脚步,因为身边的人都在往那个高度攀登着,因为高处的风景,至少,或许更加美好。本文主题 好了,废话不多说,今天我们来看《Effective C++》中的条款04:条款04:确定对象被使用前已先被初始化 Make sure that objects are initialized before th... 阅读全文
摘要:
1. 前言 关于指针函数和函数指针,特别是函数指针,相信很多C/C++ers跟我曾经一样,对它抱有敬畏,认为它是很高深的东西,其实不然。要理解它花不了多少功夫,或许我一句话就能说清楚二者的区别,但是这样也只是在脑子里形成一个概念而已。大学时代,作为一名学生时,我可以一天看完毛概,考八九十分;但是我用了一个星期去看谭浩强的C++教材(尽管现在很多人鄙视这本教材),上机时却仍无从下手,我可以侃侃而谈,熟悉一切概念,但是就是编不出程序。这就是程序员的世界,凡事只有动手才能领悟真谛。不过这也应证了一句千古名句,也是我最喜欢的一句诗“纸上得来终觉浅,绝知此事要躬行”。 本文所有代码编译及运行环境:win 阅读全文
摘要:
1. 主版本模板类 首先我们来看一段初学者都能看懂,应用了模板的程序: 1 #include <iostream> 2 using namespace std; 3 4 template<class T1, class T2> 5 class A{ 6 public: 7 void function(T1 value1, T2 value2){ 8 cout<<"value1 = "<<value1<<endl; 9 cout<<"value2 = "<<value2&l 阅读全文
摘要:
1. New的本质当使用关键字new在堆上动态创建一个对象时,它实际上做了三件事: ①获得一块内存空间 ②调用类构造函数 ③ 返回指向地址的正确指针如果创建的是简单类型的变量,第二步就不执行了。下面我们看一段代码: 1 #include <iostream> 2 using namespace std; 3 4 class A { 5 int m_value; 6 public: 7 A(int value) :m_value(value * value){} 8 void Func(){ 9 printf("m_value=%d\n", m_v... 阅读全文
摘要:
参考同事博客:http://www.cnblogs.com/hustcser/archive/2012/10/19/2731085.html 阅读全文
摘要:
作者在本节提醒读者注意两点:1. 对于单纯的常量,最好以const对象或enum替换#define2. 对于形就似函数的宏定义,最好改用inline函数替换#define1. 对于单纯的常量,最好以const对象或enum替换#define 在阅读这一条的时候,我们要知道为什么要用const对象或enum来替换#define,要知道#define定义的常量的缺陷。首先,用#define定义的常量在预处理时,就被定义的值替换掉,也就是参与编译的内容并没有我们定义的常量名字,也就不会被计入常量表,这样发生错误的时候,我们是无法跟踪错误的源头的。但是,对于congst常量和enum的值,编译阶段或调 阅读全文
摘要:
关于本条款,作者一直在向我们强调一个观点,那就是不要把C++当做我们学过的单纯语言,而要把C++当做一个具有多个独立特性的联邦语言。1. C++由C发展而来,它兼容一切C的语法特性,因此,C++国度里的第一个联邦——C语言,即面向过程的代表语言。2. 从一开始,C++引入了面向对象的特性,即C++一开始的名称C with classes,这是C++的第二个联邦——面向对象语言。3. 接着就是C++ Template,这部分语法特性使得C++支持泛型编程,因此,这可以作为C++的第三个联邦——Template编程语言。4. 最后就是有名的STL,作为C++泛型编程的代表作,虽然在C++的语言框. 阅读全文
摘要:
1. strcat——字符串连接 1 #include <iostream> 2 using namespace std; 3 4 int main(){ 5 6 char str[15] = "abcd"; 7 char str1[] = "abc"; 8 strcat(str, str1); 9 cout<<str<<endl;10 11 system("pause");12 return 0;13 }※注意点,第一个字符串数组要足够大,否则会有越界问题。2. strcpy——字符串拷贝 1 # 阅读全文
摘要:
1. 获取输入的第一个程序 1 #include <iostream> 2 using namespace std; 3 4 int main(){ 5 6 char str[15]; 7 cin>>str; 8 cout<<str<<endl; 9 10 system("pause");11 return 0;12 }上面的程序可以获取用户的输入,但是如果用户输入如下字符串:abcd cdef输出结果不是我们想要的“abcd cdef”,而是“abcd”。这说明cin认为空格是字符串结束标志。另外,如果我们的用户输入如下字符 阅读全文
摘要:
一、SQLite SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite也被用于很多软件,打开飞信的安装目录,就能看见 SQLite ,估计是被用来存储聊天记录的。二、下载SQLite 我下的版本为sqlite-ama.. 阅读全文
摘要:
看了一个多星期的C++,找了很多博客来计划铺垫未来C++学习之路,发现C++的水不是一般的深,虽然没有J2EE里面的各种框架,但是其本身已极尽复杂。个人才踩到了一点水皮,下面是摘录的一些博客上的内容,有需要学C++的,一起学习:C++高手需知知识(其中一部分,但有代表性)虚函数是什么函数?为什么需要虚函数?普通基类和虚基类的区别是什么?虚继承的作用是什么?什么是虚函数表?在多重继承关系下,虚函数表是如何存储虚函数关系的?如何通过虚函数表分析设计安全性?什么是菱形继承?菱形继承的内存布局是怎样的?菱形继承会导致什么问题?如何避免菱形继承带来的问题?什么是静态联编?什么是动态联编?它们的实现手段各 阅读全文
摘要:
1 #include <iostream> 2 using namespace std; 3 4 class A 5 { 6 public: 7 static void staticmember(){cout<<"static"<<endl;} 8 void nonstatic(){cout<<"nonstatic"<<endl;} 9 virtual void virtualmember(){cout<<"virtual"<<endl;}10 };1 阅读全文
摘要:
1 /** 2 * 设计模式:单例模式 3 * 模式作用:为类提供全局唯一的对象,通常用于工具类或保存程序运行数据 4 **/ 5 #include <iostream> 6 using namespace std; 7 8 class Singleton{ 9 private:10 Singleton(){11 cout<<"Initialize Singleton"<<endl;12 }13 static Singleton *instance;14 15 public:16 static Singleton* getInstanc. 阅读全文