自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Dances with Wolves 的专栏

Never underestimate your power to change yourself!

  • 博客(38)
  • 资源 (19)
  • 收藏
  • 关注

原创 给C++初学者的50个忠告

1.把C++当成一门新的语言学习(和C没啥关系!真的。); 2.看《Thinking In C++》,不要看《C++变成死相》; 3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看; 4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学

2012-09-27 14:48:09 576

原创 第七章 函数(part7) 指向函数的指针

7.9. 指向函数的指针函数指针是指指向函数而非指向对象的指针。像其他指针一样,函数指针也指向某个特定的类型。函数类型由其返回类型以及形参表确定,而与函数名无关: // pf points to function returning bool that takes two const string references bool (*pf)(const string

2012-09-26 09:41:03 501

原创 第七章 函数(part6) 重载函数

出现在相同作用域中的两个函数,如果具有相同的名字而形参表不同,则称为重载函数。使用某种程序设计语言编写过算术表达式的程序员都肯定使用过重载函数。表达式 1+3调用了针对整型操作数加法操作符,而表达式 1.0 + 3.0调用了另外一个专门处理浮点操作数的不同的加法操作。根据操作数的类型来区分不同的操作,并应用适当的操作,是编译器的责任,而不是程序员的事情。类似地

2012-09-26 09:26:31 665

原创 第七章 函数(part5) 类的成员函数

7.7. 类的成员函数成员函数的定义与普通函数的定义类似。和任何函数一样,成员函数也包含下面四个部分:函数返回类型。函数名。用逗号隔开的形参表(也可能是空的)。包含在一对花括号里面的函数体。正如我们知道的,前面三部分组成函数原型。函数原型定义了所有和函数相关的类型信息:函数返回类型是什么、函数的名字、应该给这个函数传递什么类型的实参。函数原型

2012-09-26 09:12:08 799

原创 第七章 函数(part4) 局部对象 & 内联函数

7.5. 局部对象在 C++ 语言中,每个名字都有作用域,而每个对象都有生命期。要弄清楚函数是怎么运行的,理解这两个概念十分重要。名字的作用域指的是知道该名字的程序文本区。对象的生命期则是在程序执行过程中对象存在的时间。在函数中定义的形参和变量的名字只位于函数的作用域中:这些名字只在函数体中可见。通常,变量名从声明或定义的地方开始到包围它的作用域结束处都是可用的。

2012-09-25 20:24:00 646

原创 第七章 函数(part3) return 语句 & 函数声明

7.3. return 语句return 语句用于结束当前正在执行的函数,并将控制权返回给调用此函数的函数。return 语句有两种形式: return; return expression;7.3.1. 没有返回值的函数不带返回值的 return 语句只能用于返回类型为 void 的函数。在返回类型为 void 的函数中,return 返回语句不是必需

2012-09-25 20:14:07 927

原创 第七章 函数(part2) 参数传递

每次调用函数时,都会重新创建该函数所有的形参,此时所传递的实参将会初始化对应的形参。:形参的初始化与变量的初始化一样:如果形参具有非引用类型,则复制实参的值,如果形参为引用类型,则它只是实参的别名。7.2.1. 非引用形参普通的非引用类型的参数通过复制对应的实参实现初始化。当用实参副本初始化形参时,函数并没有访问调用所传递的实参本身,因此不会修改实参

2012-09-25 17:29:16 714

原创 第七章 函数(part1) 函数的定义

7.1. 函数的定义函数由函数名以及一组操作数类型唯一地表示。函数的操作数,也即形参,在一对圆括号中声明,形参与形参之间以逗号分隔。函数执行的运算在一个称为函数体的块语句中定义。每一个函数都有一个相关联的返回类型。考虑下面的例子,这个函数用来求出两个 int 型数的最大公约数: // return the greatest common divisor int

2012-09-25 16:17:51 740

原创 第六章 语句

空语句如果在程序的某个地方,语法上需要一个语句,但逻辑上并不需要,此时应该使用空语句。这种用法常见于在循环条件判断部分就能完成全部循环工作的情况。例如,下面程序从输入流中读取数据,在获得某个特殊值前无需作任何操作: // read until we hit end-of-file or find an input equal to sought while (cin

2012-09-25 15:50:30 889

原创 解析C语言中的sizeof

一、sizeof的概念    sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。 二、sizeof的使用方法    1、用于数据类型  sizeof使用形式:sizeof(type)  数据类型必须用括号括

2012-09-25 15:19:33 717

转载 c语言详解sizeof & sizeof函数总结

一、sizeof的概念  sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。 二、sizeof的使用方法   1、用于数据类型    sizeof使用形式: sizeof(type)

2012-09-24 21:20:09 2115

原创 第五章 表达式(part3) 复合表达式的求值、new 和 delete 表达式、类型转换

5.10. 复合表达式的求值含有两个或更多操作符的表达式称为复合表达式。在复合表达式中,操作数和操作符的结合方式决定了整个表达式的值。表达式的结果会因为操作符和操作数的分组结合方式的不同而不同。操作数的分组结合方式取决于操作符的优先级和结合性。也就是说,优先级和结合性决定了表达式的哪个部分用作哪个操作符的操作数。如果程序员不想考虑这些规则,可以在复合表达式中使用圆括号强制实

2012-09-24 20:29:56 892

原创 第五章 表达式(part2) 自增和自减、箭头、条件、sizeof 、逗号 操作符

5.5. 自增和自减操作符自增(++)和自减(--)操作符为对象加1或减1操作提供了方便简短的实现方式。它们有前置和后置两种使用形式。到目前为止,我们已经使用过前自增操作,该操作使其操作数加1,操作结果是修改后的值。同理,前自减操作使其操作数减 1。这两种操作符的后置形式同样对其操作数加 1(或减 1),但操作后产生操作数原来的、未修改的值作为表达式的结果: int i

2012-09-24 15:15:42 1192

原创 第五章 表达式(part1) 算术、关系、逻辑、位、赋值

5.1. 算术操作符表 5.1 按优先级来对操作符进行分组——一元操作符优先级最高,其次是乘、除操作,接着是二元的加、减法操作。高优先级的操作符要比低优先级的结合得更紧密。这些算术操作符都是左结合,这就意味着当操作符的优先级相同时,这些操作符从左向右依次与操作数结合。表 5.1. 算术操作符Operator操作符Functio

2012-09-24 15:05:40 1127

原创 第四章 数组和指针(part5) 总结 & 常用术语

本章介绍了数组和指针。数组和指针所提供的功能类似于标准库的 vector 类与string 类和相关的迭代器所提供。我们可以把vector 类型理解为更灵活、更容易管理的数组,同样,string 是 C 风格字符串的改进类型,而 C 风格字符串是以空字符结束的字符数组。迭代器和指针都能用于间接地访问所指向的对象。vector 类型所包含的元素通过迭代器来操纵,类似地,指针则用于访问数组元素。尽

2012-09-24 10:33:03 493

原创 第四章 数组和指针 (part4) 多维数组

严格地说,C++ 中没有多维数组,通常所指的多维数组其实就是数组的数组: // array of size 3, each element is an array of ints of size 4 int ia[3][4];在使用多维数组时,记住这一点有利于理解其应用。如果数组的元素又是数组,则称为二维数组,其每一维对应一

2012-09-24 09:39:18 522

转载 iPhone比小米贵3000 贵在哪里?

今天我们来聊聊为什么iPhone比小米贵3000元,贵在哪里。以均价来看,iPhone行货4999的价格比小米1999多出了3000块,而购买的人多出无数倍,这让我不禁非常想要探究到底是什么带来了这个差价,或许就像讨论过程中很多人说的,就算你都把它讨论明白了,也无法改变大家的选择,但我只想把我的想法表达出来,大家,尤其是iphone用户拼命反击的同时,也希望在无人的角落能够仔细想想我说

2012-09-24 08:11:43 1691

原创 第四章 数组和指针 (part3) C 风格字符串

:尽管 C++ 支持 C 风格字符串,但不应该在 C++ 程序中使用这个类型。C 风格字符串常常带来许多错误,是导致大量安全问题的根源。字符串字面值的类型就是 const char 类型的数组。C++ 从 C 语言继承下来的一种通用结构是C 风格字符串,而字符串字面值就是该类型的实例。实际上,C 风格字符串既不能确切地归结为 C 语言的类型,也不能归结为 C++ 语言的类型,而是以空字

2012-09-23 17:26:39 1210

原创 第四章 数组和指针 (part2) 引入指针

vector 的遍历可使用下标或迭代器实现,同理,也可用下标或指针来遍历数组。指针是指向某种类型对象的复合数据类型,是用于数组的迭代器:指向数组中的一个元素。在指向数组元素的指针上使用解引用操作符 *(dereference operator)和自增操作符 ++(increment operator),与在迭代器上的用法类似。对指针进行解引用操作,可获得该指针所指对象的值。而当指针

2012-09-23 15:47:05 705

原创 第四章 数组和指针 (part1) 数组

概述:C++ 语言提供了两种类似于 vector 和迭代器类型的低级复合类型——数组和指针。与 vector 类型相似,数组也可以保存某种类型的一组对象;而它们的区别在于,数组的长度是固定的。数组一经创建,就不允许添加新的元素。指针则可以像迭代器一样用于遍历和检查数组中的元素。现代 C++ 程序应尽量使用 vector 和迭代器类型,而避免使用低级的数组和指针。设计良好的程序只

2012-09-23 11:22:05 634

原创 第三章 标准库类型(part 5) 总结 & 常用术语

C++ 标准库定义了几种更高级的抽象数据类型,包括 string 和 vector 类型。string 类型提供了变长的字符串,而vector 类型则可用于管理同一类型的对象集合。迭代器实现了对存储于容器中对象的间接访问。迭代器可以用于访问和遍历 string 类型和 vectors 类型的元素。下一章将介绍 C++ 的内置数据类型:数组和指针。这两种类型提供了类似于 vect

2012-09-23 10:42:09 454

原创 第三章 标准库类型(part 4) 标准库 bitset

3.5. 标准库 bitset有些程序要处理二进制位的有序集,每个位可能包含 0(关)1(开)值。位是用来保存一组项或条件的 yes/no 信息(有时也称标志)的简洁方法。标准库提供的bitset 类简化了位集的处理。要使用bitset 类就必须包含相关的头文件。在本书提供的例子中,假设都使用std::bitset 的 using 声明: #include us

2012-09-23 10:28:33 469

原创 第三章 标准库类型(part 3) 迭代器

3.4. 迭代器简介除了使用下标来访问 vector 对象的元素外,标准库还提供了另一种访问元素的方法:使用迭代器(iterator)。迭代器是一种检查容器内元素并遍历元素的数据类型。     标准库为每一种标准容器(包括vector)定义了一种迭代器类型。迭代器类型提供了比下标操作更通用化的方法:所有的标准库容器都定义了相应的迭代器类型,而只有少数的容器支持下标操作。因为

2012-09-23 09:55:16 481

原创 第三章 标准库类型(part 2) 标准库 vector 类型

3.3. 标准库 vector 类型vector 是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。和 string 对象一样,标准库将负责管理与存储元素相关的内存。我们把 vector 称为容器,是因为它可以包含其他对象。一个容器中的所有对象都必须是同一种类型的。使用 vector 之前,必须包含相应的头文件。假设已作了相应的 using 声明: #includ

2012-09-23 09:33:04 569

转载 #Pragma Pack(n)与内存分配

#pragma pack(n)解释一:每个特定平台上的编译器都有自己的默认“对齐系数”(也叫对齐模数)。程序员可以通过预编译命令#pragma pack(n),n=1,2,4,8,16来改变这一系数,其中的n就是你要指定的“对齐系数”。  规则:  1、数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在off

2012-09-23 08:04:47 1101

转载 sizeof运算符以及内存对齐

sizeof Operatorsizeof expression The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value of

2012-09-23 08:03:43 596

原创 .c/.cpp文件windows命令行下编译,运行.c/.cpp文件

用virtual studio编译链接文件习惯了,今天想在windows命令行下试一下如何进行文件的编译运行,起初以为敲几个命令就螚搞定了,输入cl命令居然不能运行,提示“cl不是内部命令或者外部命令”,上网查了许久,发现这样的问题介绍的好少,下面就谈谈在命令行下如何编译运行.c或者.cpp文件方法一:1、讲Microsoft   Visual   Studio下的cl

2012-09-23 08:02:05 1273

转载 C++编译,链接

以前学习C++的时候半懂不懂,用微软的IDE,所以对于编译链接不是很了解,今天总算了些了解。1、何谓编译,链接高级语言(C,C++等等)要变成机器可执行的指令,需要“编译”,“链接”,“装入”三个过程,编译:由编译程序将用户源代码编译成若干个目标模块,即.c/ .cpp----->.obj(windows) .o(unix),一般是一个源文件对应一个.obj文件

2012-09-23 08:01:21 417

转载 c++中this指针的用法

this指针只能在一个类的成员函数中调用,它表示当前对象的地址。下面是一个例子: void Date::setMonth(int mn ){ month = mn;this->month = mn;(*this).month = mn;}// 这三句是等价的 1. this只能在成员函数中使用。 全局函数,静态函数都不能使用this。 实际上,成员函数默认第一个参数

2012-09-23 08:00:40 535

原创 第三章 标准库类型(part 1) 标准库 string 类型

除基本数据类型外,C++ 还定义了一个内容丰富的抽象数据类型标准库。其中最重要的标准库类型是 string 和 vector,它们分别定义了大小可变的字符串和集合。string 和 vector 往往将迭代器用作配套类型(companion type),用于访问string 中的字符,或者vector 中的元素。这些标准库类型是语言组成部分中更基本的那些数据类型(如数组和指针)的抽象。

2012-09-22 19:36:37 588

原创 第二章 变量和基本类型(续3)类类型 & 编写自己头文件

2.8. 类类型C++ 中,通过定义类来自定义数据类型。类定义了该类型的对象包含的数据和该类型的对象可以执行的操作。标准库类型string、istream和ostream都定义成类。C++对类的支持非常丰富——事实上,定义类是如此重要,后续会陆续全部用来描述 C++ 对类及类操作的支持。类定义以关键字 class 开始,其后是该类的名字标识符。类体位于花括号里面。花括号后面

2012-09-22 15:16:44 580

原创 第二章 变量和基本类型(续2) 引用 & typedef

2.5. 引用引用就是对象的另一个名字。在实际程序中,引用主要用作函数的形式参数。引用是一种复合类型,通过在变量名前添加“&”符号来定义。复合类型是指用其他类型定义的类型。在引用的情况下,每一种引用类型都“关联到”某一其他类型。不能定义引用类型的引用,但可以定义任何其他类型的引用。引用必须用与该引用同类型的对象初始化: int ival = 1024;

2012-09-22 14:48:39 639

原创 第二章 变量和基本类型 (续1) 变量 & const 限定符

2.3. 变量关键概念:强静态类型C++ 是一门静态类型语言,在编译时会作类型检查。在大多数语言中,对象的类型限制了对象可以执行的操作。如果某种类型不支持某种操作,那么这种类型的对象也就不能执行该操作。在 C++ 中,操作是否合法是在编译时检查的。当编写表达式时,编译器检查表达式中的对象是否按该对象的类型定义的使用方式使用。如果不是的话,那么编译器会提示错误,而不产生可执行文件

2012-09-22 14:26:13 792

原创 第二章 变量和基本类型

类型是所有程序的基础。类型告诉我们数据代表什么意思以及可以对数据执行哪些操作。C++ 语言定义了几种基本类型:字符型、整型、浮点型等。C++ 还提供了可用于自定义数据类型的机制,标准库正是利用这些机制定义了许多更复杂的类型,比如可变长字符串string、vector 等。此外,我们还能修改已有的类型以形成复合类型。类型确定了数据和操作在程序中的意义。C++ 中对类型的支持是非常

2012-09-22 12:57:55 889

原创 float和double的范围和精度

float与double的范围和精度1 范围float和double的范围是由指数的位数来决定的。float的指数位有8位,而double的指数位有11位,分布如下:float:1bit(符号位)8bits(指数位)23bits(尾数位)double:1bit(符号位)11bits(指数位)52bits(尾数位)在数学中,特别是在计算

2012-09-22 12:32:12 3338 1

原创 第一章

1、内置类型:如int型等有C++语言定义的类型2、调用GNU或微软编译器程序编写完成后需要进行编译,如何进行编译,与具体的操作系统和编译器有关。需要查看参考手册或者了解所用到的编译器的工作细节.调用C++编译器的命令因编译器和操作系统的不同而不同,常用的编译器是GNU编译器和微软的Visual Studio,调用GNU编译器的默认命令是g++: $ g++ prog1.cc -o

2012-09-22 10:32:05 524

原创 C++ 技术连接

侯捷http://download.csdn.net/tag/%E4%BE%AF%E6%8D%B7    csdn网友上传的侯捷相关书籍http://www.jjhou.com/   侯捷的主页http://download.csdn.net/tag/C%E8%AF%AD%E8%A8%80%E6%8A%80%E5%B7%A7 关于C语言技巧连接C

2012-09-21 17:05:37 574

原创 开始回顾C/C++

离开C、C++技术开发的时间大概有近一年了,趁着工作没有忙到夸张,找时间抓紧回顾和温习。编译环境: Dev-C++ 4.9.9.2技术对象:C++ Primer 中文版 >主要工作: 基础知识的整理整体知识点的回顾和总结相关技术点代码的调试重点用法的归纳

2012-09-21 15:51:10 593

常见js源码

js在项目中用的越来越多,这里积累了一些常用的代码,供参考

2016-03-21

MFC socket Dialog Test

自己撰写的一个基于简单Dialog的MFC Socket类

2013-11-18

代理事件机制

Delegates-and-Events-in-CSharp.rar

2012-11-10

threadpool.rar

threadpool线程池学习

2012-11-10

visual C++开发

介绍VC开发OCX的文章

2012-11-10

Linux常用命令

Linux常用命令全集

2012-11-10

高质量C++

林锐版本的高质量C++编程指南,深入学习C++的参考用书,必须学习

2012-11-10

深入Python

[深入Python].(Dive.Into.Python).Mark.Pilgrim.文字版.Examples.zip,原本文档扫描版

2012-11-10

移动侦测的一个代码

C++开发,移动侦测的算法代码,一个老外的算法改写而来,很好用

2012-11-10

GCC 参考技术大全

GCC开发

2012-09-21

C++引用的作用和用法

详叙述c++中引用的做法.引用作为c++中无论程序设计还是参数引用,还是指针引用都是很常见和实用的

2012-09-21

C++规范编程

C++作为最广泛的开发工具,编程规范多不被人所重视,导致后续的代码出现各种各样的问题,从而不得不进行重构和修补,浪费了很多时间。本文介绍比较规范的编程模式

2012-08-15

C#描述中的单例与多例模式

单例模式有以下特点: 单例类只能有一个实例。 单例类必须自己创建自己的唯一实例。 单例类必须给所有其他对象提供这一实例。 一个典型的单例类的实现如下所示:其中构造子私有表示子类不能被继承。

2012-08-15

C#异步回调算法

2.工作机制: .Net使用从线程池中得到的线程来执行通过BeginInvoke()分配的方法,当异步方法执行完成时,工作线程调用回调方法而不只直接回到线程池中,要实现回调方法,我们必须在使用beginInvoke()方法的时候指定一个参数为IAsyncResult类型的方法,因为在 AsyncResult是一个.Net中已经定义好的委托,我们要使用回调方法的话,就必须符合他的要求:他的定义如下,public delegate void AsyncCallBack(IAsyncResult asyncResult);

2012-08-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除